235 votes

Comment obtenir des éléments avec plusieurs classes

Dis que j'ai ça :

 <div class="class1 class2"></div>

Comment sélectionner cet élément div

 document.getElementsByClassName('class1')[0].getElementsByClassName('class2')[0]

Cela ne fonctionne pas.

Je sais que, dans jQuery, c'est $('.class1.class2') , mais j'aimerais le sélectionner avec vanille JavaScript.

326voto

Bitterblue Points 1652

ET (les deux classes)

 var list = document.getElementsByClassName("class1 class2");
var list = document.querySelectorAll(".class1.class2");

OU (au moins une classe)

 var list = document.querySelectorAll(".class1,.class2");

XOR (une classe mais pas l'autre)

 var list = document.querySelectorAll(".class1:not(.class2),.class2:not(.class1)");

NAND (pas les deux classes)

 var list = document.querySelectorAll(":not(.class1),:not(.class2)");

NOR (aucune des deux classes)

 var list = document.querySelectorAll(":not(.class1):not(.class2)");

232voto

Joe Points 34413

C'est en fait très similaire à jQuery :

 document.getElementsByClassName('class1 class2')

MDN Doc getElementsByClassName

50voto

filoxo Points 855

querySelectorAll avec des sélecteurs de classe standard fonctionne également pour cela.

 document.querySelectorAll('.class1.class2');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X