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

标签 javascript

我正在尝试做一个简单的 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/

相关文章:

javascript - javascript 中的 json 值到字符串数组

javascript - 从脚本标记中的文本区域评估 Google Earth 代码

javascript - 我改变不透明度的功能不起作用

javascript - 创建通过客户端计算机路由的代理

javascript - 在浏览器中检测手机的最简单方法

javascript - 如何在 npm 脚本中编写多行脚本?

javascript - Jasmine测试回调参数是否被调用

javascript - vue.js 2 中哪个更好,使用 v-if 还是 v-show?

javascript - React HashRouter不渲染其他路径,仅渲染根组件 '/'

javascript - 如何获取在 JavaScript 中的 URL 中传递的参数