今天在使用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);
}
}
修改后的代碼成功運行,解決掉了這個小問題