2013-05-01 25 views
0

我以爲我解決了我的問題,使用for(var key in arr)建議here,但這會導致IE中出現問題。現在我回到原點了。

var myVariable = []; 

myVariable['option-1'] = 'something'; 
myVariable['option-2'] = 'something else'; 
$.each(myVariable, function(index, value) { 
    alert(index + ': ' + value); 
}); 

它不起作用。沒有顯示。有人可以編輯它,使其工作?

+0

陣列方法不支持命名屬性。使用一個'Object'('{}')*(不是'Array'('[]'))*和'for ... in'循環 – C5H8NNaO4 2013-05-01 20:21:03

回答

4

只需使用而不是數組的對象:

var myVariable = {}; 
+0

當代碼在兩個瀏覽器(FF和Chrome),而不是在另一個(IE)。隨着改變,你甚至建議IE似乎理解我的代碼。 Tnx – RST 2013-05-01 21:12:21

+0

這很有趣,你可能碰到了一個jQuery bug;我會研究它。無論如何,如果你需要命名鍵,你應該總是使用一個對象。 – bfavaretto 2013-05-01 22:22:12

+0

IE添加了那些不在那裏的元素。如果對象/數組有兩個元素myVariable ['options-2'] = 3和myVariable ['options-5'] = 1。那麼在IE中它將有第三個元素myVariable ['indexOf']該值是一個整體功能。 – RST 2013-05-01 23:10:58

1

不需要jQuery。
只需使用一個for..in迴路(與對象{}不是數組[]):

for(var index in myVariable) { 
    var value = myVariable[index]; 
    alert(index + ': ' + value); 
} 
3

變化var myVariable = [];var myVariable = {};

您正在使用的語法myVariable['option-1'] = 'something';用於對象而不是數組。

2

myVariable是一個數組。要將東西添加到數組中,請使用myVariable.push('something')。您正在使用方括號語法,這是您通常將對象添加到對象的方式。

由於數組是對象,仍可以訪問option-1,但它不是在陣列中的一員,它是對象的屬性:myVariable['option-1']; // "something"

的解決方案是設置myVariable的一個對象。 jQuery的each方法將按照預期迭代對象的屬性。