JavaScript:在多个元素上添加/删除单个类

use*_*218 9 javascript class

如何在多个类选定元素上添加/删除单个类.

在我的设置中,我有一些缓存的变量并不是每个变量:

var classOne    = document.querySelector(".class1");
var classTwo    = document.querySelector(".class2");
var classThree  = document.querySelector(".class3");
var classFour   = document.querySelector(".class4");
Run Code Online (Sandbox Code Playgroud)

但我也想尝试这样的事情:

var allClasses = [classOne, classTwo, classThree, classFour];

allClasses.classList.add("active");
allClasses.classList.remove("active");
Run Code Online (Sandbox Code Playgroud)

似乎没有工作.

请不要jQuery.

Fab*_*rts 9

现在这可以简化为:

document.querySelectorAll('.class1, .class2, .class3, .class4').forEach(el => el.classList.add('active'))
Run Code Online (Sandbox Code Playgroud)

如果您需要旧版浏览器支持,请使用常规函数或转译并包含此polyfill

if (window.NodeList && !NodeList.prototype.forEach) {
    NodeList.prototype.forEach = function (callback, thisArg) {
        thisArg = thisArg || window
        for (let i = 0; i < this.length; i++) {
            callback.call(thisArg, this[i], i, this)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你使用querySelectorAll很多,你可以将它绑定到一个变量:

const $$ = document.querySelectorAll.bind(document)

$$('.class1, .class2, .class3, .class4').forEach(el => el.classList.add('active'))
Run Code Online (Sandbox Code Playgroud)


bot*_*ens 7

试试这个:

var classOne    = document.querySelector(".class1");
var classTwo    = document.querySelector(".class2");
var classThree  = document.querySelector(".class3");
var classFour   = document.querySelector(".class4");

var allClasses = [classOne, classTwo, classThree, classFour];

allClasses.forEach(function(el) {
  el.classList.add("active")
})
Run Code Online (Sandbox Code Playgroud)