错误:为null或不是对象

时间:2013-11-15 00:36:12

标签: javascript html

我在javascript中使用了一个多维数组来存储我用来动态生成内容的数据,并且它可以在任何webkit浏览器以及firefox和IE 9及以上版本中运行良好但是由于某种原因IE 8(我测试的地方)它)和IE 7(我模仿)在下面的代码中给我一个错误“是null或不是对象”:

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的文档就绪事件中。

3 个答案:

答案 0 :(得分: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及更早版本中,该数组将有四个项而不是三个,最后一项将是未定义的。当t3时,data[t]将返回undefined,并将[3]应用于该错误消息。它表示“'3'为空或不是对象”,因为3是用于获取非对象值的索引。

答案 1 :(得分:0)

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

我在IE7中的控制台专门说"'i' is undefined"

答案 2 :(得分:0)

我在IE7和IE中测试阵列IE8,它工作正常。 “我”的原因?

if($.type(data[t]) == 'array' && data[t][3] == i)