javascript - 进行切换以向具有特定类的所有元素添加/删除类
问题描述
我一直在尝试进行切换,因此当单击它时,它会为每个具有“ChangeColors”类但无法这样做的元素添加一个类。它返回
TypeError:无法读取未定义的属性“添加”
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");
}
}
解决方案
您正在尝试使用返回.classList
的NodeList
类型,document.querySelectorAll
而应该在 NodeList 中的每个元素上使用它。
您实际上可以使用classList.toggle来避免像这样进行所有手动切换。
const all = document.querySelectorAll('.ChangeColors');
all.forEach(elem => {
elem.classList.toggle("bluecolor")
});
推荐阅读
- c# - IE & Edge Selenium 驱动程序无法在下拉列表中找到元素
- javascript - 在 JavaScript 等单线程环境中,“竞争条件”的正确术语是什么?
- r - 如何用 (|) 拆分 sp|O00602|FCN1_HUMAN
- hive - 在另一个查询中使用 Hive/Impala 查询的结果
- php - 在 ajax 上更改添加到购物车按钮文本已添加到 Woocommerce 中的购物车
- interop - AMQP 1.0 和 0-* 客户端之间的互操作性
- excel - Excel 数据透视表添加 % 列
- node.js - Kubernetes给出错误,但代码有效
- go - 用于工程师测试的平台独立 go build
- angular - 监听嵌套表单控件值会产生错误 null is not an object