SCRIPT438:对象不支持属性或方法'join'

时间:2012-10-09 13:22:01

标签: javascript internet-explorer

我在F12开发工具下的Internet Explorer 9.0上遇到此错误,在以下语句中:

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

此方法适用于除IE之外的所有浏览器。为什么不起作用?

3 个答案:

答案 0 :(得分:4)

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

它可能是以下各项的组合:

  • 您正在IE8中进行测试,或者如果您使用的是IE9,那么您处于Quirks模式

  • 构建数组时,您添加了一个尾随,

在Quirks模式下,或在IE8及更低版本中,如果在Array文字语法中包含一个尾随逗号,它将(错误地)在数组末尾添加一个额外的项目。

这表示您的上一个项目为undefined,使用.join()时会出现错误。


在IE8及更低版本或Quirks模式下的任何版本中,您将获得以下内容:

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

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

答案 1 :(得分:0)

通过将arr = []更改为var arr = [];

来解决此问题

答案 2 :(得分:0)

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

我以为我使用join方法作为Array类型的静态方法(可能背叛了我的C#历史),如下所示:

  

var s = Array.join(myArray,&#34;,&#34;);

并且毫不奇怪我无法找到使用该语法的其他人。 令人惊讶的是它在Firefox中有效。在IE浏览器中没有,这就是我在这里的原因。

改为更传统的

  

var s = myArray.join(&#34;,&#34;);

修好了!