2014-05-09 16 views
6

Jak dodać/usunąć pojedynczą klasę na wielu elementach wybranych przez klasę.JavaScript: Dodaj/usuń pojedynczą klasę na wielu elementach.

W mojej konfiguracji Mam pewne zmienne buforowane nie robi rzeczy do siebie:

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

ale jestem również stara się zrobić coś takiego:

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

allClasses.classList.add("active"); 
allClasses.classList.remove("active"); 

nie wydaje ale działa.

Nie proszę jQuery.

+0

Może to pomoże http://stackoverflow.com/questions/2155737/remove-css-class-from-element-with-javascript-no-jquery –

+0

Kilka rzeczy, na które należy uważać: 'classList' nie jest obsługiwane w IE8 lub IE9. (Może to być [shimmed] (https://github.com/remy/polyfills/blob/master/classList.js).) Ponadto 'querySelector' znajduje ** pierwszy dopasowany element w DOM. –

Odpowiedz

5

Spróbuj tego:

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") 
}) 
+0

, który działał dobrze. Dzięki. BTW co znaczy el? – user3143218

+1

@ user3143218: Przypuszczalnie "el" oznacza element w tablicy, niezależnie od tego, czy bierzesz "element" w znaczeniu "element tablicy" czy "element DOM". :-) –

+1

Array.prototype.forEach przekazuje wartość indeksu, w którym się znajduje. Które w tym przypadku będą elementami. @ T.J.Crowder Idę na elementy DOM, ale dobry punkt :) – bottens

Powiązane problemy