2012-10-09 68 views
3

我的Internet Explorer 9.0遇到这个错误在F12开发工具,在下面的语句:SCRIPT438:对象不支持属性或方法“加入”

arr = []; 
for (i = 0; i < items.length; i ++) { 
    console.log(items[i]); 
    arr.push(items[i].join(',')); 
} 

这种方法在除IE浏览器的每个工作。为什么它不工作?

+3

您的“项目”之一不是数组。 – Pointy

+0

是物品[我]是一个数组?在循环中添加一条调试线。 '的console.log(项[I]); arr.push(items [i] .join(','));' – epascarello

+0

由于您的开发人员工具处于打开状态,因此当您记录要循环的数组中的每个项目时,发现了什么? –

回答

4

这是我的猜测(因为我们缺乏信息)

它可能是以下组合:

  • 你在IE8测试,或当你构建的,如果你正在使用IE9,你的怪癖模式

  • 是数组,你提供一个尾随,

怪癖模式,或在IE8和更低的,如果您在数组文本语法后面的逗号,它会(错误地)在数组的末尾添加一个额外的项目。

这意味着您的最后一个项目将是undefined,当您使用.join()时,您将收到错误消息。


在IE8和更低的,或Quirks模式任何版本,你会得到如下:

var items = [ 
    ["foo"], 
    ["bar"], 
    ["baz"], // <-- trailing comma 
]; 

alert(items.length); // 4 (should be 3) 
0

这个问题是通过改变编曲解决= []为VAR ARR = [];

0

不太一个答案,但会帮助我......

我想我是用如下的连接方法数组类型的静态方法(这可能背叛我的C#史):

var s = Array.join(myArray,“,”);

毫不奇怪,我找不到使用该语法的其他人。 令人惊讶的是,它在Firefox中起作用。没有在IE中,这是什么让我在这里。

更改为更常规的

变种S = myArray.join( “”);

修好了!

相关问题