IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Basculer la class d'un élément en js


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 178
    Par défaut Basculer la class d'un élément en js
    Bonjour,

    J'ai créé une fonction js qui me permet de changer la class css d'un lien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    Dans mon head :
    function ChangeClass(id) {
     
    var box= document.getElementById(id)
    box.className="newclass"
     
    Dans mon body
    <a href="javascript:;" class="defaut" id="box1" onClick="changeClass('box1')">lien1</a>
    <a href="javascript:;" class="defaut" id="box2" onClick="changeClass('box2')">lien2</a>
    <a href="javascript:;" class="defaut" id="box3" onClick="changeClass('box3')">lien3</a>
    Mon problème est que ma fonction marche bien. Lorsque je clic sur un lien il me change bien ma class mais j'aimerais que lorsque je clic sur un second lien, qu'il me remette la classe du premier lien cliqué à défaut et le second lien cliqué soit bien changé. Une idée ?

    Merci

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    disons qu'il n'y a pas vraiment besoin de js pour changer la classe d'un lien;

    et puis "Onclik" n'existe pas;

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 178
    Par défaut
    Citation Envoyé par javatwister Voir le message
    disons qu'il n'y a pas vraiment besoin de js pour changer la classe d'un lien;

    et puis "Onclik" n'existe pas;
    Ah oui explique moi alors comment tu fais mister javatwister. Si tu parles de le faire en CSS ça ne joue pas pour moi car en utilisant

    A:link {}
    A:hover { }
    A:active { }
    ou
    A:visited { }

    ça ne réalise pas la fonction que je souhaite. Car si j'utilise visited ben tous les liens sur lesquels j'aurais cliquer vont changer de class. Alors que moi je souhaite, si je clik sur le lien 1, il change de classe, si je clik sur un lien 2, le lien 1 revient à la classe par défaut et le lien 2 prend la nouvelle classe. Il faut donc un javascript je pense ???

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 178
    Par défaut
    Merci Romain je vais tester cela !

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 178
    Par défaut
    Merci Romain mais avec ta solution il y a deux soucies :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function ChangeClass(id) {
       var liens = document.getElementsByTagName("A");
       for (var i = 0 ; i < liens.length ; ++i) liens[i].className = ((liens[i].id = id)?"newclass":"oldclass");
    }
    Le premier c'est que vu que dans mon document j'ai plusieurs a href du coup il change tous de class. Ensuite lorsque je reclick sur le lien, il ne revient pas à la class par défaut...

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 178
    Par défaut
    Bon après tout une matinée de recherche. Voici une solution. Elle peut être pas optimisé mais en tous cas, elle marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function ChangeClass(id) {
     
    var liens = document.getElementsByName("link");
    	 for (var i = 0 ; i < liens.length ; ++i) 
    	 liens[i].className = "defaut";
     
     
    var idlink=id;
    var hover = document.getElementById(idlink);
    		hover.className="hover"
    }
    Ensuite dans mon lien j'ai placé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <a href="javascript:;" name="link" id="link1" class="defaut" onClick="ChangeClass('link1'"></a>
    <a href="javascript:;" name="link" id="link2" class="defaut" onClick="ChangeClass('link2'"></a>
    <a href="javascript:;" name="link" id="link3" class="defaut" onClick="ChangeClass('link3'"></a>

  7. #7
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Citation Envoyé par yamatoshi Voir le message
    Le premier c'est que vu que dans mon document j'ai plusieurs a href du coup il change tous de class.
    Mais tu n'avais pas précisé que ton problème se limitait à une partie des liens de la page
    Ce n'est pas grave il y a des moyens pour éviter cela.
    Imaginons que l'extrait que tes liens soient contenus dans un <div> dont l'id est "liens" :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var liens = document.getElementById("liens").getElementsByTagName("A");

  8. #8
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Citation Envoyé par yamatoshi Voir le message
    Mon problème est que ma fonction marche bien.
    Merci, grâce à toi je viens de trouver ma "phrase du jour"

    Et... à part ça : attention avec className, je crois qu'IE6 ne comprend que "class", qui est malheureusement aussi un mot réservé de js ... donc si tu rencontres des problèmes, pense à essayer de remplacer
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    box.className="newclass"
    par
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // le "document.all" n'est ici qu'un exemple, c'est pour dire : "spécifique IE" ^^
    if (document.all) box.setAttribute("class", "newclass");
    else box.setAttribute("className", "newclass");

    Enfin : pour que tes liens (non cliqués) redeviennent comme ils sont par défaut, modifie un peu ta fonction changeClass :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function ChangeClass(id) {
       var liens = document.getElementsByTagName("A");
       for (var i = 0 ; i < liens.length ; ++i) liens[i].className = ((liens[i].id = id)?"newclass":"oldclass");
    }
    ps : attention dans ton extrait de code les accolades de ton bloc de fonction ne sont pas fermées... (peut-être une simple erreur de copier-coller ^^)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Affichage texte selon la class d'un élément
    Par Rafapouf dans le forum jQuery
    Réponses: 1
    Dernier message: 02/12/2014, 10h19
  2. Réponses: 1
    Dernier message: 01/03/2013, 19h33
  3. [Dojo] Modifier les classes CSS des éléments dijit
    Par Tavarez59 dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 02/11/2009, 21h40
  4. Modifier l'attribut Class d'un élément ?!
    Par Benzeghiba dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/09/2009, 15h29
  5. Réponses: 1
    Dernier message: 25/06/2009, 01h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo