2012-05-11 97 views
3

所以我在這裏遇到了奇怪的問題。我有一個數組status=new Array()。然後我從0迭代到N-1,並指定status[i]="idle";我試着做警報來檢查這些值,並將它們全部分配給一個字符昏迷,。任何人都知道什麼是錯的?Javascript數組字符串

var status=new Array(); 
window.onload = function() { 
    for(var i=0;i<5;i++) { 
     status[i]="idle"; 
     alert(status[i]); 
    } 
} 

回答

7

使用不同的變量名(或更好,但根本不使用全局變量)。已經有一個window.status property了,顯然有些東西不會讓你用自己的陰影(這讓我感到有點驚訝;我想知道數組是否被賦值爲字符串或任何東西)。在全局範圍內,varwindow對象上創建屬性,這就是爲什麼window.status是相關的。

This examplesource)複製您的問題(對我來說,使用Chrome),並this examplesource),只需改變名稱顯示正確的一系列警報。

請注意,這是針對瀏覽器的。在Firefox上,即使您的舊代碼也能顯示正確的一系列警報。例如,Firefox允許我們重新定義window.status,但Chrome不是。

+0

啊哈,我明白了!非常感謝! –

+0

是的,有一個window.status屬性可能會掩蓋它。 但是,當我只是將它複製到小提琴,它對我來說工作正常。這裏的鏈接:http://jsfiddle.net/wGzv9/ – gopi1410

+0

@ gopi1410:它似乎是特定於瀏覽器的。我在Chrome中收到了一系列「未定義」警報,但在Firefox中出現了正確的「空閒」警報。其他瀏覽器可能會做其他事情。在一天結束時,可能最好避免全球化。 :-) –