Supposons que la variable id
d'un élément HTML soit connue, de sorte que l'élément peut être référencé en utilisant
document.getElementById(element_id);
Existe-t-il une fonction Javascript native pouvant être utilisée pour ajouter une classe CSS à cet élément?
var element = document.getElementById(element_id);
element.className += " " + newClassName;
Voilà. Cela fonctionnera sur pratiquement tous les navigateurs. L'espace de début est important, car la propriété className
traite les classes css comme une chaîne unique, qui doit correspondre à l'attribut class
sur les éléments HTML (où plusieurs classes doivent être séparées par des espaces).
Incidemment, vous feriez mieux d'utiliser une bibliothèque Javascript comme prototype ou jQuery , qui dispose de méthodes pour le faire, ainsi que de fonctions permettant de vérifier si un élément a déjà une classe. .
En prototype, par exemple:
// Prototype automatically checks that the element doesn't already have the class
$(element_id).addClassName(newClassName);
Tu vois combien c'est beau?!
classList est une alternative pratique pour accéder à la liste des classes d'un élément .. voir http://developer.mozilla.org/en-US/docs/Web/API/Element.classList .
Non pris en charge dans IE <10
Lorsqu'un élément a déjà un nom de classe défini, son influence sur l'élément est liée à sa position dans la chaîne des noms de classe. Les classes ultérieures remplacent les précédentes en cas de conflit.
Ajouter une classe à un élément devrait déplacer le nom de la classe à la fin de la liste, s'il existe déjà.
document.addClass= function(el, css){
var tem, C= el.className.split(/\s+/), A=[];
while(C.length){
tem= C.shift();
if(tem && tem!= css) A[A.length]= tem;
}
A[A.length]= css;
return el.className= A.join(' ');
}
Ajouter une classe en utilisant la propriété classList de l'élément:
element.classList.add('my-class-name');
Enlever:
element.classList.remove('my-class-name');
Vous devriez pouvoir définir la propriété className de l'élément. Vous pouvez faire un + = pour l'ajouter.
vous pouvez utiliser setAttribute
.
Exemple: Pour ajouter une classe:
document.getElementById('main').setAttribute("class","classOne");
Pour plusieurs classes:
document.getElementById('main').setAttribute("class", "classOne classTwo");
addClass=(selector,classes)=>document.querySelector(selector).classList(...classes.split(' '));
Cela va ajouter UNE classe ou plusieurs classes:
addClass('#myDiv','back-red'); // => Add "back-red" class to <div id="myDiv"/>
addClass('#myDiv','fa fa-car') //=>Add two classes to "div"