2012-12-01 159 views
0

我有一個調用此函數的html按鈕。但由於未知原因,它只能進行3次迭代。for循環在javascript中意外結束

任何人都可以幫助或引薦我一些很好的例子,爲什麼for循環在第三次迭代後中斷?

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

你可以把你的html代碼部分? – polin

+0

你有沒有嘗試過看javascript控制檯? – Eric

+1

似乎工作正常 - [jsFiddle](http://jsfiddle.net/quA4V/)。 – RichardTowers

回答

0

也許你沒有這個ID的元素,這就是爲什麼它打破了for循環,去你的代碼的HTML部分嘗試你初始化你不增加或減少的名字,如果你這樣做正確的(在for或foreach循環)也許你使用相同的$ i變量爲2個不同的循環或更改其值(除$ i ++或$ i--以外)

2

最可能的原因是,你不必與id價值"4"的元素。因此,document.getElementById返回null,然後當您嘗試查看checked屬性時,您將取消引用null,該引發異常。或者當然,您沒有id"TD4"的元素,因此您以後的getElementById返回null,並且在分配給innerHTML時會得到異常。

當試圖調試東西時,最好使用調試器。所有現代瀏覽器都有調試器,內置  —,其中一些相當不錯。在大多數瀏覽器中,按F12會調出調試器,但如果不去查看「開發人員工具」或類似的菜單。

即使沒有調試器,十多年前的所有瀏覽器都有告訴你JavaScript錯誤的方法。我至少會這樣做,所以你可以看到錯誤。


邊注:開始用數字id值在HTML也是最近才獲准(在HTML5有效,在HTML4無效或更早版本),但仍不能有效的CSS。我建議避開它們。