未捕获的类型错误:无法读取未定义的属性'checked'......错误解决过程
今天在使用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); } }
修改后的代码成功运行,解决掉了这个小问题