我的Internet Explorer 9.0遇到这个错误在F12开发工具,在下面的语句:SCRIPT438:对象不支持属性或方法“加入”
arr = [];
for (i = 0; i < items.length; i ++) {
console.log(items[i]);
arr.push(items[i].join(','));
}
这种方法在除IE浏览器的每个工作。为什么它不工作?
我的Internet Explorer 9.0遇到这个错误在F12开发工具,在下面的语句:SCRIPT438:对象不支持属性或方法“加入”
arr = [];
for (i = 0; i < items.length; i ++) {
console.log(items[i]);
arr.push(items[i].join(','));
}
这种方法在除IE浏览器的每个工作。为什么它不工作?
这是我的猜测(因为我们缺乏信息)。
它可能是以下组合:
你在IE8测试,或当你构建的,如果你正在使用IE9,你的怪癖模式
是数组,你提供一个尾随,
怪癖模式,或在IE8和更低的,如果您在数组文本语法后面的逗号,它会(错误地)在数组的末尾添加一个额外的项目。
这意味着您的最后一个项目将是undefined
,当您使用.join()
时,您将收到错误消息。
在IE8和更低的,或Quirks模式任何版本,你会得到如下:
var items = [
["foo"],
["bar"],
["baz"], // <-- trailing comma
];
alert(items.length); // 4 (should be 3)
这个问题是通过改变编曲解决= []为VAR ARR = [];
不太一个答案,但会帮助我......
我想我是用如下的连接方法数组类型的静态方法(这可能背叛我的C#史):
var s = Array.join(myArray,“,”);
毫不奇怪,我找不到使用该语法的其他人。 令人惊讶的是,它在Firefox中起作用。没有在IE中,这是什么让我在这里。
更改为更常规的
变种S = myArray.join( “”);
修好了!
您的“项目”之一不是数组。 – Pointy
是物品[我]是一个数组?在循环中添加一条调试线。 '的console.log(项[I]); arr.push(items [i] .join(','));' – epascarello
由于您的开发人员工具处于打开状态,因此当您记录要循环的数组中的每个项目时,发现了什么? –