说是不能读取classList这个属性,我写的代码是这样的
let lis = document.querySelectorAll(".tab .tab-item");
let divs = document.querySelectorAll(".products .main");
for (let i = 0; i < lis.length; i++) {
lis[i].addEventListener("click", function () {
document.querySelector(".tab .active").classList.remove("active");
this.classList.add("active");
console.log(this);
document.querySelector(".products .active").classList.remove("active");
divs[i].classList.add("active");
});
}
写到divs[i]这里一直报错,我打印是undefined,我就一直想不通
直到我看见了for循环里面的i,for循环里面的i如果不声明默认是全局变量,如果不加let就会出问题
至于为什么,我搜了一下,说是
用 var 声明时,变量 i 是唯一的,每一次 i 的改变都改变了自身的栈地址。
所以循环结束后访问 i 时,都通过 i 最后一次存放的栈地址,获取到其指向的基本量。
虽然我也没太看懂,但是文章来源:https://www.toymoban.com/news/detail-635416.html
一定要记得写let!!!!!文章来源地址https://www.toymoban.com/news/detail-635416.html
到了这里,关于关于原生js里报这个错:Cannot read properties of undefined (reading ‘classList‘) at HTMLLIElement.的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!