JavaScript for .. in 循环 IE 问题

标签 javascript internet-explorer checkbox for-loop

我正在尝试使用 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/

相关文章:

css - 什么 css 导致此复选框输入缩进

javascript - angularjs选择框默认选择基于数据库id

javascript - 在 contenteditable 中检测粘贴事件

javascript - 当 "dragging"Chrome 中的图像时,mouseup 事件未触发

javascript - IE 中的源映射.//@sourceURL

javascript - 我需要从 javascript 读取 HKEY_CURRENT_USER 吗?

jQuery:将所有输入(选择、单选按钮、复选框等)的值从页面的一个部分复制到另一部分

javascript - Axios 上的 setInterval get 和更新输出而不重复

internet-explorer - IE 7 和 8(渐变 + 边框半径)

android - 自定义 ListView 中的复选框和 selectAll 按钮错误