- - PR -
JavaScriptでlengthを参照しようとするとErrorが発生してしまう。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-07-19 17:48
いつもお世話になっております。
JavaAppletを使用したwebアプリケーションを作成しているのですが、 客先の環境だけでエラーが発生するらしく、非常に困ってます。 もし、何か分かる方がいらっしゃったらご教授をお願いいたします。 【環境】 ブラウザ:IE6.0 JRE :SunJava 1.5.0_01 【現象】 1 var a = [JavaAppletからデータを取得 データは,区切りのテキスト]; 2 3 if(a != "" && a != undefined) 4 { 5 temp_sd = a.split(","); 6 var b = temp_sd.length % 2; 7 } を実行すると 6行目で、 "temp_sd.length"はNull またはオブジェクトではありません。 という、エラーが発生するようです。 ※JavaAppletからデータを取得している箇所は、カンマ区切りの長い文字列が取得できています。 (800バイト位の文字列で、全角も混じっています。splitが成功すると、length=160位になるようです) ※自社の環境では1回も発生しません。 他の環境では、どのマシンで行っても必ず発生するそうです。 ※他にtemp_sd変数を使用している箇所はありません このエラーが出る場合は、temp_sdがnullの場合だと思うのですが、 split()でnullが返るというのが理解できません。 単純な質問かもしれませんが、客先環境ですのでdebugができなく 大変困ってます。 何卒よろしくお願い足します。 |
|
投稿日時: 2006-07-19 18:27
split()でnullが返ってきているのではなく、何らかの原因でお客様先で
[JavaAppletからデータを取得 データは,区切りのテキスト] が成功せず、aがnullになっているのではないでしょうか。 aがnullの場合は if(a != "" && a != undefined) はtrueとなりますので、nullのlengthを参照しようとしてJavaScriptエラーが発生しているものと思われます。 お客様先環境で、JavaAppletからデータを取得できているかどうかを確認する必要がありますね。 [ メッセージ編集済み 編集者: Vacant-Eyes 編集日時 2006-07-19 18:29 ] |
|
投稿日時: 2006-07-19 18:32
a が null の場合は、split の段階でエラーになるかと思いますが...
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
|
投稿日時: 2006-07-19 19:32
5行目と6行目の間に、本当になにもないんでしょうか。
temp_sdにvarがついてないことや、bにvarがついてることが気になるんですが。 aのチェックは if (a) でやると空文字もundefinedもnullも弾けますね。 |
|
投稿日時: 2006-07-19 23:27
Vacant-Eyesさん、じゃんぬねっとさん、mioさん
早速の書き込みありがとうございました。 (その割には返事が遅くなってすみません) Vacant-Eyesさんのおっしゃるとおり、 aがnullの可能性もあるので、 疑ってみたんですが・・・・・ じゅんぬねっとさんがおっしゃるとおり、 splitでエラーが出てしまうようです。 mioさん > 5行目と6行目の間に、本当になにもないんでしょうか それが・・・なにもないです。 確かに、temp_sdにvarがないのは気にはなっていたのですが、 ソースと同じく、あえてそのまま書きました。 これが原因って可能性もありますでしょうか? (ちなみに、他で使用も宣言もされていません) 開発環境ではまったく再現しないので、 環境的な問題が怪しいと思うのですが・・・。 (Googleツールバー等の環境も含め) 何か知ってる方がいらっしゃったら、 引き続き、ご助言お願いいたします。 |
|
投稿日時: 2006-07-20 01:33
a には全角も混じっているとありますが
マルチバイトの文字が正しく認識できていないため 区切り文字であるカンマが認識できなくて temp_sd が null になってしまっているということはないでしょうか。 METAタグでの文字コード指定は正しく行っていますでしょうか。 また、HTMLファイルの文字コードが UTF-8 で 外部JavaScriptファイルを読み込みむ形式を使用していませんか。 (当然、外部JavaScriptファイル UTF-8 です) |
|
投稿日時: 2006-07-20 11:17
書き込み、ありがとうございます。
早速、文字コードを確認したところ、 外部jsファイル・・・・・・・・Shift-JIS jsファイルを参照するhtml・・・Shift-JIS Appletタグのあるフレーム・・・UTF-8 でした ![]() 文字コードをすべてUTF-8に修正して、 再度客先で実行してもらおうと思います。 また結果を報告致します。 皆様、本当に書き込みありがとうございました!! |
1