我正在尝试使用 JavaScript 来处理复选框。 IE(使用 IE8)似乎对下面的代码有问题。它在 Firefox 中运行得非常好。
这是我的示例 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;
}
}
有任何关于发生什么事的线索吗?我只是 Web 开发的初学者,所以我可能会错过 IE/Firefox 的一些细微差别。
非常感谢任何帮助!
最佳答案
您应该使用常规的 for
循环:
for(var i=0; i<all.length; i++) ...
for(var j=0; j<some.length; j++) ...
您使用的 for..in
将从数组原型(prototype)中迭代其他属性,而不仅仅是数组索引。
另外,我会避免使用 all
作为变量名,也许 IE 会感到困惑(它有它的 document.all
)。但我对此不太确定。
关于JavaScript for .. in 循环 IE 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11111535/