私は、いくつかのプロパティを持つ配列を持っている JavaScript の問題で何ヶ月も苦労してきました。その後、これらのプロパティのいくつかをチェックして、ユーザーにメッセージを表示するかどうかを決定します。
現在、これはほとんどのシステム (特に最近のブラウザー) ではうまくいきますが、クライアントの一部の IE7 コンピューターではうまくいきません。
今、コードのどこかで、以下のように新しい配列を初期化していますが、実際には「完了」の値を設定していないことがわかりました
var qar=new Array('question_no','pos','done');
qar['question_no'] = 1234;
qar['pos'] = 1234; //dont mind these numbers
後でいくつかの for ループでチェックします。
//check if this question was already shown
if(qar['done'])
continue; //stop here, don't show message
//set done to true, so that this question will not be shown again
qar['done'] = true;
window.alert('messaged!');
繰り返しになりますが、IE7 ではメッセージがまったく表示されないことがあります (実際にはかなり頻繁に、常にではありません) 。
私の質問ですが、初期化直後に qar['done'] を未定義にする必要があることはわかっています。これにより、コードが正常に動作します (Chrome など)。たとえば、その qar['done'] は未定義ではありませんが、ランダムな値であるため、誤って true と見なされることがありますか? それとも、それは愚かなことだと思いますか?
これが問題ではない場合、何が問題なのかわかりません..
前もって感謝します!