1

私はjavascriptで多次元配列を使用して、コンテンツを動的に生成するために使用するデータを保存しました.Webkitブラウザ、Firefox、IE 9以上で正常に動作しますが、何らかの理由でIE 8(私がテストした場所)とIE 7 (私がエミュレートしたもの) では、次のコードで「is null or not an object」というエラーが表示されます。

var data =
        [
        ["A","X",[5,6],3,2014],
        ["V","L",[9,10],4,2014],
        ["X","N",[10,11],6,2014]
        ];
for(var t=0;t<data.length;t++){
  if(data[t][3]==i){
     alert("Found");
   }
}

このエラーは、具体的には「3」が null またはオブジェクトではなく、if ステートメントの 3 を参照していることを示しています。配列を次のように宣言していないため、エラーが発生する可能性があります

var data=new Array();

または別の問題がありますか?

追加情報: このコードは、jQuery のドキュメント準備完了イベントにあります。

4

3 に答える 3

3

問題のコードではそのエラーは発生しませんが、配列の最後の項目の後にカンマがある場合は、次のようになります。

var data =
    [
    ["A","X",[5,6],3,2014],
    ["V","L",[9,10],4,2014],
    ["X","N",[10,11],6,2014],
    ];
for(var t=0;t<data.length;t++){
  if(data[t][3]==i){
     alert("Found");
   }
}

IE8 以前では、その配列には 3 つではなく 4 つの項目があり、最後の項目は未定義です。tがの場合3data[t]が返さundefinedれ、 を適用する[3]と、そのエラー メッセージが表示されます。3オブジェクトではない値を取得するために使用したインデックスであるため、「 '3' は null またはオブジェクトではありません」と表示されます。

于 2013-11-15T00:57:54.193 に答える
0

私の最初のコメントは、これを IE7 で実行しているという事実を見逃していました。その場合、答えはあなたが定義していないということですi

IE7の私のコンソールは具体的に言う"'i' is undefined"

于 2013-11-15T00:58:53.533 に答える
0

IE7 と IE8 でアレイをテストしましたが、正常に動作します。「私」の原因は?

if($.type(data[t]) == 'array' && data[t][3] == i)
于 2013-11-15T01:06:41.523 に答える