项目场景:
点击切换浏览器壁纸的代码
问题描述
浏览器控制台报错
Uncaught TypeError: Cannot set properties of undefined (setting ‘onclick’)
at
<body>
<div class="bigbox">
<img src="../素材/箴言1副本.jpg" alt="" />
<img src="../素材/箴言2副本.jpg" alt="" />
<img src="../素材/箴言3副本.jpg" alt="" />
<img src="../素材/箴言4副本.jpg" alt="" />
</div>
</body>
<script>
var pics = document.querySelector('.bigbox').querySelectorAll('img');
for (var i = 1; i < pics.length+1 ; i++) {
pics[i].onclick = function() {
console.log(this.src);
}
}
</script>
原因分析:
这个错误是说变量的值是 undefined 无法设置onclick事件。具体到案例素材只有4个,而获取元素时循环从1开始,第4个元素不存在,onclick无法绑定,于是报错。
解决方案:
改变循环变量的起始值即可