我有这个代码:
<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)
小智 14
或者您可以尝试为不支持foreach方法的浏览器扩展Array对象,如下所示:https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference : Objects :Array: forEach#Compatibility
我认为jQuery.each是最好的解决方案
var idArr = ["LocationFirst","LocationSecond","LocationThird","LocationFourth","LocationFifth"];
$.each(idArr,function(index, entry) {
//some code
});
Run Code Online (Sandbox Code Playgroud)
它将迭代数组"idArr"中的所有元素,并可以对每个元素做一些事情.
| 归档时间: |
|
| 查看次数: |
71799 次 |
| 最近记录: |