Changement de classe css en js

Fermé
Silee - Modifié par Silee le 15/09/2015 à 14:54
 Ramu - 15 sept. 2015 à 21:23
Bonjour,
j'aimerai utiliser une function js pour changer de classe div lors d'un clic.
Seulement j'aimerai utiliser cette fonction sur plusieurs div (je clique sur une elle change de classe mais pas les autres)
J'aimerais savoir si l'on est obligé d'utiliser des id.
sinon j'ai essayé avec quelque chose comme

<div class="classold" onclick="this.changeclasse()">

<script>
function openproject(){
this.className = "newclass";}
</script>

mais ça ne fonctionne pas...

merci!!
A voir également:

1 réponse

Salut,
il y a plusieurs façons d'accéder à un élément l'ID est souvent la plus pratique.
Vous avez aussi Xpath
https://developer.mozilla.org/fr/docs/Introduction_%C3%A0_l'utilisation_de_XPath_avec_JavaScript
et JQuery qui permettent d'avoir les sélecteurs qu'on veut(id, tagname, class) et permet d'avoir des sélecteurs multiples parcourant tout l'arbre DOM et une syntaxe simplifiée.
ex: $('div'). sélectionne tout les div de l'arbre DOM.

Tous exploitent le DOM ( il me semble que vous l'appréhendez mal):
Dans votre code=this.changeclasse();(définit nulle part?)
this. correspond à la page(document) car toute partie de javascript se réfère d'abord à son code(lui même excluant toute balise HTML), pour utiliser le DOM il faut d'abord 'sélectionner l'élément' que l'on veut utiliser(voir exemples W3C avec document.getElementID()).
Pour utiliser .className http://www.w3schools.com/jsref/prop_html_classname.asp un exemple.
Vous avez aussi setAttribute()
http://www.w3schools.com/jsref/met_element_setattribute.asp

L'exemple utilise comme sélecteur getElementByTagName sur le premier div de la page('h1')[0].
Donc pas besoin de l'id même si pour une seule balise ciblée je trouve ça lourd à écrire.

leurs équivalents en JQuery sont .attr() et .css() qui permet d'écrire directement les propriétés de style que l'on veut pour la dernière méthode.
En javascript pur on écrira tout simplement: element.setAttribute('style','background-color:#ff0000;') alors que JQUERY.css permet de définir chaque propriété de façon plus précise(et sûre).
0