2

我正在尝试使用带有 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 为“one”的复选框,而不触及“5”和“3”。

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 的一些细微差别。

将不胜感激任何帮助!

4

1 回答 1

4

您应该使用常规for循环:

for(var i=0; i<all.length; i++) ...
for(var j=0; j<some.length; j++) ...

您正在使用的将迭代数组原型中的for..in其他属性,而不仅仅是您的数组索引。

另外,我会避免all用作变量名,也许 IE 会感到困惑(它有它的document.all)。但我不确定这一点。

于 2012-06-20T01:12:17.860 回答