对于IE中的每个JavaScript支持?

use*_*094 33 javascript

我有这个代码:

<script>
function toggle(source) {

  checkboxes = document.getElementsByName('DG1');
  for each(var checkbox in checkboxes)
    checkbox.checked = source.checked;

  checkboxes = document.getElementsByName('DG2');
  for each(var checkbox in checkboxes)
    checkbox.checked = source.checked;

  checkboxes = document.getElementsByName('DG3');
  for each(var checkbox in checkboxes)
    checkbox.checked = source.checked;

  checkboxes = document.getElementsByName('DG4');
  for each(var checkbox in checkboxes)
    checkbox.checked = source.checked;

  checkboxes = document.getElementsByName('DG5');
  for each(var checkbox in checkboxes)
    checkbox.checked = source.checked;
}
</script>

<input type="checkbox" onClick="toggle(this)" />Select All<br/>

<form method=POST action="DGUsageServlet">
    <input type="checkbox" name="DG1">DG1</input>
    <input type="checkbox" name="DG2">DG2</input>
    <input type="checkbox" name="DG3">DG3</input>
    <input type="checkbox" name="DG4">DG4</input>
    <input type="checkbox" name="DG5">DG5</input>
</form>
Run Code Online (Sandbox Code Playgroud)

如何使上述脚本在IE中工作?

Mat*_*ley 43

请注意,Firefox不再支持每个循环,因此这适用于每个浏览器,而不仅仅是Internet Explorer.有关替代方案,请参阅此MDN文章.


Internet Explorer不支持"for each"循环(以及其他现代浏览器,它们已经不再支持它们).您需要更改代码以使用常规for循环:

function toggle(source) {
    var checkboxes = document.getElementsByName('DG1');
    for (var i = 0; i < checkboxes.length; i++) {
        checkboxes[i].checked = source.checked;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用像jQuery这样的库,并按照以下方式执行:

function toggle(source) {
    $("input[name^=DG]").attr("checked", source.checked);
}
Run Code Online (Sandbox Code Playgroud)

  • 回到那一天,您只需要在多个体系结构中兼容*source*.现在你必须在几个浏览器架构中兼容"二进制",加上一堆松散分散的砖块,下面有一个死獾,尖叫着怜悯. (4认同)

小智 14

或者您可以尝试为不支持foreach方法的浏览器扩展Array对象,如下所示:https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference : Objects :Array: forEach#Compatibility


Roh*_*bey 8

我认为jQuery.each是最好的解决方案

var idArr = ["LocationFirst","LocationSecond","LocationThird","LocationFourth","LocationFifth"];

 $.each(idArr,function(index, entry) {
   //some code
 });
Run Code Online (Sandbox Code Playgroud)

它将迭代数组"idArr"中的所有元素,并可以对每个元素做一些事情.