Uncaught TypeError: Cannot read property 'checked' of undefined错误解决

今天在使用Javascript实现一个简单的功能期间,出现了如下图所示的错误:

Uncaught TypeError: Cannot read property 'checked' of undefined错误解决
错误信息大致为:未捕获的类型错误:无法读取未定义的属性'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);
            }
      }

修改后的代码成功运行,解决掉了这个小问题

上一篇:JavaScript----事件


下一篇:2020-12-30