1

我在javascript中使用了一个多维数组来存储我用来动态生成内容的数据,它在任何webkit浏览器以及firefox和IE 9及更高版本中都可以正常工作,但由于某种原因IE 8(我测试过它)和IE 7(我模拟的)在以下代码中给了我一个错误“为空或不是对象”:

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”为空或不是对象,并在 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 及更早版本中,该数组将有四个项目而不是三个,并且最后一个项目将是未定义的。当tis时3data[t]将返回undefined,并应用[3]到 that 将出现该错误消息。它说“'3' 为空或不是对象”,因为3它是您用来获取不是对象的值的索引。

于 2013-11-15T00:57:54.193 回答
0

我在 IE7 和 IE8 中测试了数组,它工作正常。“我”的原因?

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

我原来的评论错过了你在 IE7 中运行它的事实。在那种情况下,答案是你还没有定义i

我在 IE7 中的控制台特别说"'i' is undefined"

于 2013-11-15T00:58:53.533 回答