0

この関数を呼び出す html ボタンがあります。しかし、理由は不明ですが、3回しか繰り返されません。

3回目の反復後にforループが壊れる理由の良い例を誰か助けてくれたり、紹介してくれたりできますか?

for(i = 1; i < 10; i++) {
   alert(i);
  if (document.getElementById(i).checked) {
    alert("dda3");
    act = act + document.getElementById("TD" + i).innerHTML + delimiter;
  }
}
4

2 に答える 2

2

id最も可能性の高い理由は、値を持つ要素がないことです"4"。その結果、document.getElementByIdが返され、属性nullを調べようとすると、 が逆参照され、例外がスローされます。またはもちろん、値を持つ要素がないため、後で返され、に割り当てるときに例外が発生します。checkednullid"TD4"getElementByIdnullinnerHTML

物事をデバッグしようとするときは、デバッガーを使用するのが最善です。最新のブラウザーにはすべてデバッガーが組み込まれており、中には非常に優れたものもあります。ほとんどのブラウザーでは、F12 を押すとデバッガーが起動しますが、そうでない場合はメニューから「開発者ツール」などを探します。

デバッガーがなくても、10 年以上前のすべてのブラウザーには、JavaScript エラーを通知する手段があります。エラーを表示できるように、少なくとも有効にします。


補足:id数字で始まる値が HTML で許可されるようになったのはごく最近のことです (HTML5 では有効、HTML4 以前では有効ではありません)。CSS ではまだ有効ではありません。それらを避けることをお勧めします。

于 2012-12-01T10:34:09.580 に答える
0

おそらく、その ID を持つ要素を持っていないため、for ループが壊れる理由です。コードの html 部分で試してみてください。コードの名前を初期化する場所で、正しく実行した場合はインクリメントまたはデクリメントしません ( in while for または foreach ループ) 2 つの異なるループに同じ $i 変数を使用しているか、その値を変更している可能性があります ($i++ または $i-- 以外)。

于 2012-12-01T10:43:24.227 に答える