我正在嘗試使用JavaScript複選框。 IE(使用IE8)似乎對下面的代碼有問題。它在Firefox中運行得非常好。JavaScript for ..在循環IE問題
這是我的示例html。
<input type="checkbox" name="one" id="one" />
<input type="checkbox" name="two" id="two" />
<input type="checkbox" name="three" id="three" />
<input type="checkbox" name="four" id="four" />
<input type="checkbox" name="five" id="five" />
IE只是禁用ID爲「一」複選框不接觸「十一五」和「三」。
var all = new Array("one","two","three","four","five");
var some = new Array("one","five","three");
disableFew(some);
function disableFew(few){
for (var i in all){
document.getElementById(all[i]).disabled = false;
}
for (var j in few){
if(document.getElementById(few[j]).nodeName == 'INPUT'){
document.getElementById(few[j]).checked = false;
}
document.getElementById(few[j]).value = 'disabled';
document.getElementById(few[j]).disabled = true;
}
}
發生了什麼事情的線索?我只是網絡開發的初學者,所以我可能會錯過IE/Firefox的一些細微差別。
會感謝任何幫助!
如果更改'some'數組中元素ID的順序,它是否仍然只是第一個? (順便說一句,聲明數組的最佳做法是使用數組字面語法:'var some = [「one」,「five」,「three」];'或'var some = [];'爲空數組。 ) – nnnnnn
@nnnnnn:行爲仍然保持不變,不管順序如何。我在頁面加載/某些事件時調用了幾個函數。它看起來像IE重繪(行爲)只有腳本處理它控制。我仍然試圖找到一種方法來在每個函數之後將控制權返回給IE。有任何想法嗎? – Wilderness
所有瀏覽器(不只是IE)在重繪前完成當前腳本是正常的。我不確定「每個函數之後」的意思,因爲你只顯示了一個函數,但是你可以通過'setTimeout()'調用你的函數來重新控制瀏覽器,每個延遲10ms)。我真的不明白爲什麼上面的代碼在IE8中不起作用,但重繪的東西是一個單獨的問題,因此您可能希望將該部分作爲一個新問題發佈,並提供更多詳細信息。 – nnnnnn