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 :

Changer la class d'un menu


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Points : 88
    Points
    88
    Par défaut Changer la class d'un menu
    Bien le bonjour,

    Bon, j'ai du faire 15 forums, avant de venir vous voir et d'être sur que je trouverais la solution ici, héhé. ^^

    Voilà, ça ne doit pas être la mer à boire mais je n'arrive pas à changer la class d'un menu.

    Voici le HTML :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <ul id="nav_ad">
      <li class="cur"><a href="accueil.php" class="lien_Menu"><strong>Accueil</strong></a></li>
      <li><a href="dada.php" class="lien_Menu">Lien A</a></li>
      <li><a href="dodo.php" class="lien_Menu">Lien B</a></li>
      <li><a href="dudu.php" class="lien_Menu">Lien C</a></li>
      <li><a href="dede.php" class="lien_Menu">Lien D</a></li>
    </ul>

    Donc le menu est quasiment sous la même forme que celui de développer.com, et lorsque l'on clique sur un des onglets sur menu, le css change selon l'onglet que l'on à cliquer.

    Voilà mon javascript :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    function rollover()
    {
      if(!document.getElementById || !document.createTextNode){return;}
      var n=document.getElementById('nav_ad');
      if(!n){return;}
      var lis=n.getElementsByTagName('li');
      for (var i=0;i<lis.length;i++)
      {
        lis[i].onmouseover=function()
        {
          this.className=this.className?'cur':'over';
        }
        lis[i].onmouseout=function()
        {
           this.className=this.className=='cur'?'cur':'';
        }
      }
    }
    window.onload=rollover;

    La class ne bouge pas, elle veut rester sur Accueil. Pas moyen de la faire bouger !!! erf erf erf

    Merci pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Là tu utilises onmouseover, c'est à dire le passage de la souris par dessus un élément sans cliquer. Ce qui peut être fait simplement en CSS

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #nav_ad li {
        background:red;
    }
     
    #nav_ad li:hover {
        background:green;
    }

    Si tu veux changer la classe du menu après un clic, et donc après un changement de page, je suppose que le plus simple serait de mettre un HTML différent pour le menu dans chaque page.
    One Web to rule them all

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Merci pour la réponse, mais oui il y a changement de page donc il faut que les "li" du menu se mettent à jour.

    Et donc il faudrait mettre un style différent pour chaque page, pourquoi pas !

    Donc on récupére l'URL, et suite à l'identification de l'URL on marque la "li" avec un style particulier ?

    EDIT:

    Voici mon CSS de départ :
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #nav_ad li.cur,
    #nav_ad li.over,
    #nav_ad li:hover
    {
      background:url("../images/menu vertical/tabblue.gif") #3375b2 top left no-repeat;
      border-bottom:1px solid #036;
    }
     
    #nav_ad li strong,
    ul#nav_ad li.cur a,
    ul#nav_ad li.over a,
    ul#nav_ad li:hover a
    {
      display:block;
      color:#fff;
      padding-left: 0px;
      padding-right: 2px;
      padding-top: 0px;
      text-decoration:none;
      background:url("../images/menu vertical/tabblue.gif") transparent top right no-repeat;
    }

    Donc il y a bien du CSS, mais je veux que lorsque l'on clique sur un onglet, la class "cur" se mette automatiquement sur l'onglet cliquer

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Du JAVASCRIPT s'il vous plait

  5. #5
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Pourquoi vouloir à tout prix du Javascript quand ce n'est pas approprié ?

    Sur dada.php, tu mets
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <ul id="nav_ad">
      <li><a href="accueil.php" class="lien_Menu"><strong>Accueil</strong></a></li>
      <li><a href="dada.php" class="lien_Menu cur">Lien A</a></li>
      <li><a href="dodo.php" class="lien_Menu">Lien B</a></li>
      <li><a href="dudu.php" class="lien_Menu">Lien C</a></li>
      <li><a href="dede.php" class="lien_Menu">Lien D</a></li>
    </ul>

    et sur dodo.php, tu mets
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <ul id="nav_ad">
      <li><a href="accueil.php" class="lien_Menu"><strong>Accueil</strong></a></li>
      <li><a href="dada.php" class="lien_Menu">Lien A</a></li>
      <li><a href="dodo.php" class="lien_Menu cur">Lien B</a></li>
      <li><a href="dudu.php" class="lien_Menu">Lien C</a></li>
      <li><a href="dede.php" class="lien_Menu">Lien D</a></li>
    </ul>
    One Web to rule them all

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Le menu est hors page ^^

    Il est juste appelé donc pas possible ton truc


  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    T'as raison... éditer le fichier menu.php pour mettre en place la solution la plus correcte, c'est pas possible.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Bovino aide moi

  9. #9
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Peu importe le fait que tu utilises un include, c'est quelque-chose de très basique à faire en PHP. Un minimum d'effort de recherche SVP
    http://www.laissemoichercherca.com/?...elected%20item
    One Web to rule them all

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    On est section JAVASCRIPT, dés que sa passe en PHP tu seras prévenu t'inquiet !!

    Se serait de cette ordre la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // When we click on the LI
    $("li").click(function(){
      // If this isn't already active
      if (!$(this).hasClass("active")) {
        // Remove the class from anything that is active
        $("li.active").removeClass("active");
        // And make this active
        $(this).addClass("active");
      }
    });

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Oui mais précisément, ce qu'on essaye de te dire, c'est que ce genre de chose doit être fait en PHP et non en JavaScript...

    Il ne sert à rien de faire en JavaScript des tâches qui peuvent être faites en PHP. Globalement, l'événement onload (ou dérivés) de l'objet window ne devrait être utilisé que pour initialiser les comportements sur la page, pas pour la modifier.

    Si l'on prend ton exemple, c'est très bien, quand on clique sur un lien tu changes la classe de ton <li>. C'est parfait, il est donc mis en valeur. Seulement, tout de suite après, ta page va suivre le lien cliqué et ta sélection aura disparu dans la nouvelle page affichée !
    Bien sûr, tu peux aussi mettre en place un script qui détecte au chargement du DOM sur quelle page on est et qui ajuste le <li> correspondant, mais encore une fois, c'est demander à JavaScript de faire du travail qui devrait être dévolu au serveur !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Ah d'accord c'est entendu, j'avais pas pris au sérieux l'autre personne qui à répondu...

    Du coup je passe une variable de la page principale, jusqu'au menu, pour savoir sur qu'elle page on est et ensuite mettre l'onglet approprié avec la bonne class ? Un truc comme ça ?

  13. #13
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Ben oui pourquoi me prendre au sérieux
    One Web to rule them all

  14. #14
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Pas besoin, le nom de la page en cours, tu l'as par exemple dans $_SERVER["PHP_SELF"]. Ensuite, dans ton menu, tu peux faire la comparaison avec le lien que tu construis et s'il le faut tu ajoutes la classe.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Merci bien j’essayerais ça demain

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Résolu merci pour votre aide !

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

Discussions similaires

  1. [JavaScript] Changer la class CSS via l'id
    Par Romalafrite dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 25/11/2005, 15h30
  2. Changer un caption dans un menu
    Par firejocker dans le forum MFC
    Réponses: 14
    Dernier message: 23/11/2005, 11h54
  3. Réponses: 2
    Dernier message: 24/10/2005, 10h26
  4. Réponses: 2
    Dernier message: 09/08/2005, 08h51
  5. [VB.NET] Changer de classe selon condition
    Par daner06 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/10/2004, 10h04

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