[英]check all checkboxes using javascript is not working in IE
I am trying to check all checkboxes by onclick event on a checkbox labeled 'Select All'. 我试图通过标记为“全选”的复选框的onclick事件检查所有复选框。 The code is working fine in FF,Chrome but not working in IE.
该代码在FF,Chrome中可以正常工作,但在IE中则无法工作。 The code is as below:
代码如下:
<script type="text/javascript">
function toggle(source) {
checkboxes = document.getElementsByName('category');
for(var i in checkboxes)
checkboxes[i].checked = source.checked;
}
</script>
<input type="checkbox" name="selectAll" id="selectAll" onClick="javascript :toggle(this)" />Select All Categories
<input type="checkbox" name="category" id="category1" />category1
<input type="checkbox" name="category" id="category2" />category2
<input type="checkbox" name="category" id="category3" />category3
Any help would be appreciated. 任何帮助,将不胜感激。
This cleaned up version put into a jsFiddle is working fine here in IE: http://jsfiddle.net/jfriend00/m7T2S/ . 放入jsFiddle的此清理版本在IE中可以正常工作: http : //jsfiddle.net/jfriend00/m7T2S/ 。
function toggle(source) {
var checkboxes = document.getElementsByName('category');
for (var i = 0; i < checkboxes.length; i++)
checkboxes[i].checked = source.checked;
}
So, there must be something else going on in your actual page that you aren't showing us. 因此,您的实际页面中肯定还有其他事情没有在显示给我们。
The cleanups I did on your code are: 我对您的代码进行的清理是:
for (var i = 0; i < array.length; i++)
loop. for (var i = 0; i < array.length; i++)
循环遍历复选框数组。 Arrays should never be iterated with (for i in array)
because that iterates properties of the object, not just array elements. (for i in array)
因为(for i in array)
因为它会迭代对象的属性,而不仅仅是数组元素。 javascript:
prefix on event handlers in the HTML. javascript:
前缀。 If its form then you could do like following instead of getElementsByName: 如果是其形式,则可以使用以下方法代替getElementsByName:
function toggle(source) {
var field = document.formname.category;
for (i = 0; i < field.length; i++) {
field[i].checked = source.checked;
}
}
Replace your function with below one 用以下一项替换您的功能
function toggle(source)
{
checkboxes = document.getElementsByName('category');
for(i=0;i<checkboxes.length;i++)
checkboxes[i].checked = source.checked;
}
It works for IE8, I have tested. 我测试过,它适用于IE8。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.