我正在尝试做一个简单的 slider ,但我遇到了这个问题:
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");
}
}
有人可以帮我吗?
最佳答案
这似乎可能会发生,因为 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”的值首先出现,然后是函数的参数。然后它返回调用它的函数,其参数的某些子集绑定(bind)到您提供的值。任何未绑定(bind)的参数都可以由调用者提供,但所有绑定(bind)参数必须位于调用者提供的参数之前。
关于javascript - 无法读取未定义的属性 'classList',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42930056/