2012-05-11 22 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では正しい「アイドル」アラートを取得します。他のブラウザはおそらく他のことをします。一日の終わりには、おそらくグローバルを避けるのが最善です。 :-) –