2012-01-10 32 views
0

此功能在Firefox中正常工作,但在IE上不起作用为什么每个人都无法在Internet Explorer中工作,还有什么替代方法?

可能是什么问题?

function toggle(source) { 
    checkboxes = document.getElementsByName('pay[]'); 

    for each(var checkbox in checkboxes) 
    checkbox.checked = source.checked; 
    checkTotal();  
} 
+0

可能重复的[每种的JavaScript支持在IE?](http://stackoverflow.com/questions/412447/for-each-javascript-support-in-ie) – 2012-01-10 09:23:06

回答

4

我想每个不支持IE呢。

使用这个代替:

for(var i=0;i<checkboxes.length;++i) 
{ 
    checkboxes[i].checked = source.checked; 
} 

它的工作原理不管浏览器/版本

2

for eachnon-standard Mozilla extension

将其视为正常数组。

var i, checkbox; 
for (i = 0; i < checkboxes.length; i++) { 
    checkbox = checkboxes[i]; 
} 
+0

另外' document.getElementsByName()'返回一个'NodeList'而不是一个数组,它是一个宿主对象,因此不保证是可枚举的。 – 2012-01-10 09:56:19

+0

实际上,“每个”实际上都是标准化的。它是ECMA-357标准的一部分。只是Mozilla是唯一实现该标准的浏览器。 – 2012-01-10 16:57:47

-2
for (i in checkboxes) 
    checkboxes[i].checked = source.checked; 
+1

您忘了提及只有在100%确定Array原型中没有并且永远不可枚举属性的情况下才能这样做。 – Bergi 2012-01-10 09:42:40

相关问题