我正在尝试做一个简单的滑块,但我遇到了这个问题:
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”的值首先出现,然后是函数的参数。然后,它返回被调用的函数,并将其参数的某些子集绑定到您提供的值。任何未绑定的参数都可以由调用者提供,但所有绑定参数必须位于调用者提供的参数之前。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)