今天在使用Javascript实现一个简单的功能期间,出现了如下图所示的错误:
错误信息大致为:未捕获的类型错误:无法读取未定义的属性'checked'......
错误代码如下:
var length = hobby.length;
for (var i = 0; i < length; i++) {
hobby[i].onclick = function() {
var count = 0;
if (hobby[i].checked == true) {
count++;
}
checkAll.checked = (count == length);
}
}
通过定位发现问题出现在如下代码处:
if (hobby[i].checked == true) {
count++;
}
原本认为这段代码中hobby[i]的i可以自动获取到外层for循环中的变量i的值
但是在中间还需要经过点击事件hobby[i].onclick = function() {...}
函数
所以无法获取到外层for循环的i变量,从而导致对象获取不到,更不要说对象的'×××'属性了
错误信息才会提示“无法读取未定义的属性'×××'”,此时需要在这个点击函数中重新定义一个for循环来获取对象
修改后的代码如下:
var length = hobby.length;
for (var i = 0; i < length; i++) {
hobby[i].onclick = function() {
var count = 0;
for (var i = 0; i < length; i+ {
if (hobby[i].checked == true) {
count++;
}
}
checkAll.checked = (count == length);
}
}
修改后的代码成功运行,解决掉了这个小问题