2012-10-09 105 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( 「」);

修好了!

相關問題