Uncaught TypeError: Cannot read property 'checked' of undefined錯誤解決


今天在使用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);
            }
      }

修改后的代碼成功運行,解決掉了這個小問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM