问题:
js部分
function checkAll() {
var checkAllEle = document.getElementById("checkAll");
var eles = document.getElementsByName("checkOne");
if (checkAllEle.checked == true) {
for (var i = 0; i < eles.length; i++) {
eles[i].checked = true;
}
} else {
for (var i = 0; i < eles.length; i++) {
eles[i].checked = false;
}
}
}
</script>
form表单部分
<form id="" action="#">
全选<input type="checkbox" id="checkAll" οnclick="checkAll()"/>
<input type="checkbox" name="checkOne"/>
<input type="checkbox" name="checkOne"/>
<input type="checkbox" name="checkOne"/>
</form>
原因:Form中的input属性的值已经作为当前form的属性了,由于作用域问题,onclick访问的是form的checkAll属性而不是外部的函数。(checkAll()会默认传递一个隐性参数this,此时的this代表的是form表单对象,会优先调用表单的属性,即checkAll,而不是调用window对象的checkAll()方法)
解决方法:1、修改id名不要与函数名相同;2、οnclick="checkAll()"改为οnclick="window.checkAll()"表明是window对象的check属性