无法读取属性' classList'未定义的

时间:2017-03-21 14:32:30

标签: javascript

我正在尝试做一个简单的滑块,但我有这个问题:

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 个答案:

答案 0 :(得分:2)

似乎可能会发生这种情况,因为我的范围是外部函数,所以它总是被设置为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);

什么绑定需要快照您传递给函数的变量值,以及“this”的值。首先是“this”的值,然后是函数的参数。然后它返回它被调用的函数,其参数的某个子集绑定到您提供的值。任何未绑定的参数都可以由调用者提供,但所有绑定的参数必须在调用者提供的参数之前。