问题:
想实现点击一个li,就会展示对应的div:
代码为:
var tab_list = document.querySelector('.tab_list');
var lis = tab_list.querySelectorAll('li');
var items = document.querySelectorAll('.item');
for(var i = 0; i < lis.length; i++){
// 设置每个li的index值
// lis[i].setAttribute('index',i)
lis[i].onclick = function (){
// console.log(this.getAttribute('index'))
for(var j = 0; j < lis.length; j++){
lis[j].className = ''
items[j].style.display = 'none'
}
this.className = 'current'
// var index = this.getAttribute('index')
items[i].style.display = 'block'
}
}

点击后报错,提示找不到style属性,因此判定为**items[i]**错误。
原因:
在for循环中定义的循环变量,属于局部变量,只在for循环的外层有效,无法在函数体内使用。
解决办

在尝试点击li元素显示对应div时遇到JavaScript错误:Cannot read properties of undefined (reading 'style')。问题源于for循环内的局部变量作用域限制。解决方案包括使用全局变量或为div添加自定义属性来保存索引,以便在函数体内正确引用。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



