我在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的文档就绪事件中。
答案 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及更早版本中,该数组将有四个项而不是三个,最后一项将是未定义的。当t
为3
时,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)