无法读取未定义的属性“classList”
2017-03-21
26311
我正在尝试做一个简单的滑块,但是我遇到了这个问题:
Uncaught TypeError: Cannot read property 'classList' of undefined
这是我的代码:
var div = document.querySelectorAll("div");
for(var i = 0; i < 6; i++){
div[i].onclick = function() {
this.classList.remove("active");
div[i+1].classList.add("active");
}
}
有人可以帮帮我吗?
1个回答
这似乎是因为 i 的作用域是外部函数,所以它总是被设置为 i 的最大值。因此,
div[i + 1]
将始终未定义。您可以这样做:
div[i].onclick = function(idx) {
this.classList.remove("active");
if(idx < div.length - 1) div[idx + 1].classList.add("active");
}.bind(div[i], i);
bind 所做的是获取您传递给函数的变量值的快照,以及“this”的值。“this”的值首先出现,然后是函数的参数。然后它返回调用它的函数,其部分参数绑定到您提供的值。任何未绑定的参数都可以由调用者提供,但所有绑定的参数都必须位于调用者提供的参数之前。
Anish Goyal
2017-03-21