2012-01-10 11 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

の可能重複[IE内の各JavaScriptのサポートのために?](http://stackoverflow.com/questions/412447/for-each-javascript-support-in-ie) –

答えて

4

私は、各ためはまだIEでサポートされていないと思います。

使用この代わりに:

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

それは関係なく、ブラウザ/バージョン

2

for eachの作品はnon-standard Mozilla extensionです。

通常の配列として扱います。

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

また、 ' document.getElementsByName() 'は配列ではなく' NodeList'を返します。これはホストオブジェクトであり、したがって、列挙可能であることは保証されていません。 –

+0

実際、「for each」は実際には標準化されています。これはECMA-357標準の一部です。 Mozillaがその標準を実装している唯一のブラウザだということです。 –

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

Arrayプロトタイプに列挙可能なプロパティが存在しないことを100%確信しているときにのみ行うことができるということを忘れてしまいました。 – Bergi

関連する問題