javascript - 进行切换以向具有特定类的所有元素添加/删除类

标签 javascript css

我一直在尝试进行切换,因此当单击时,它会向每个具有“ChangeColors”类的元素添加一个类,但一直无法这样做。 它返回

TypeError: Cannot read property 'add' of undefined

CSS

.ChangeColors {
    background-color: #ff801b;
    color:black;
}

.bluecolor {
 background-color: blue;
 color:white;
 }

Javascript

function ChangeColors() {
    var single = document.querySelector('.ChangeColors');
    var all = document.querySelectorAll('.ChangeColors');
    if (single.classList.contains('bluecolor')) {
      all.classList.remove('bluecolor');
      console.log("remove");
    } else {
      all.classList.add('bluecolor');
      console.log("add");
    }
}

最佳答案

您尝试在 NodeList 类型上使用 .classList,这是 document.querySelectorAll 返回的内容,您应该使用该类型NodeList 内的每个元素。

您实际上可以使用classList.toggle这样可以避免像这样进行所有手动切换。

const all = document.querySelectorAll('.ChangeColors');

all.forEach(elem => {
  elem.classList.toggle("bluecolor")
});

关于javascript - 进行切换以向具有特定类的所有元素添加/删除类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60372885/

相关文章:

javascript - 如何将 eval 值添加到 asp 数据列表中的 onclick js 函数参数(前端)

javascript - 调用onclick函数之前检查外部js中的函数是否可用

javascript - 如果我使用 Angular 作为前端,我是否需要使用 ejs 或布局?

html - 链接的 z-index 问题

javascript - Tampermonkey/GreaseMonkey AutoClick——其他主题没有帮助

javascript - 用于在 Photoshop 中的位图图像中创建文本的 Photoshop 脚本

html - CSS 选择器不适用于子项

javascript - 尝试使用 jQuery 在鼠标悬停在首字母上时淡出和滑出文本

html - 使用 flexbox 对齐左侧的 Logo 和右侧的导航链接

html - 如何强制内联 div 保持在同一行?