Partage
  • Partager sur Facebook
  • Partager sur Twitter

Menu déroulant en Javascript

avec la méthode des noeuds

    5 novembre 2008 à 19:12:21

    Bonjour à tous,

    Dernièrement j'ai essayé de faire un menu déroulant (lorsque l'on clique sur les liens du menu), en javascript et en utilisant la technique des noeuds.

    Voici ce à quoi je suis parvenu:
    http://aserres.free.fr/menu_semi_deroulant.html

    Le problème c'est que le sous menu apparait quand on clique, mais disparait immédiatement après!

    Comment résoudre le problème?
    Merci d'avance smile
    • Partager sur Facebook
    • Partager sur Twitter
      5 novembre 2008 à 19:21:15

      C'est tout à fait normal, on clique un lien, on se fait donc envoyer vers la page du href (ici la même page puisque ton href est vide).
      Appelle ta fonction ainsi sur tes liens :
      <a href="javascript:sous_menu1();">Menu 1</a>
      
      • Partager sur Facebook
      • Partager sur Twitter
        5 novembre 2008 à 19:40:35

        Merci beaucoup Elias!

        Sinon je me demandais, quelle est la méthode la plus efficace entre celle que j'ai choisi, et celle ou on écrirait tout le menu en html et on gèrerait en javascript le défilement avec display:none/block ?
        • Partager sur Facebook
        • Partager sur Twitter
          5 novembre 2008 à 19:49:38

          Il y a plusieurs aspects à prendre en compte.
          Déjà, là, tu rajoutes juste des li. Mais si ton menu devient plus compliqué, qu'il s'y trouve des li avec différentes class, ou encore un menu construit dynamiquement en PHP, la méthode du display: none est clairement plus pratique.
          Mais surtout, en faveur de cette méthode, il y a le cas du noscript (l'utilisateur a désactivé javascript). Deux options pour gérer cela :
          A. Tu affiches ton menu complet, puis ensuite en javascript tu masques les sous-menus (ainsi l'utilisateur qui a désactivé javascript les verra)
          B. Tu génères une fois tes menus avec un display none, puis une deuxième fois dans un <noscript>, cette fois sans le display: none;
          La seconde possibilité est un peu moins propre, certes, mais elle t'évite d'avoir à appeler une fonction au chargement pour masquer les éléments devant l'être.
          Si toutefois tu veux faire du code joli (sans répétition du menu même s'il n'est visible qu'une fois), et donc afficher les menus, puis les rendre invisible en javascript après le chargement de la page, ce script pourrait t'être utile : http://dev.twiip.ch/scripts/jsactif/
          • Partager sur Facebook
          • Partager sur Twitter
            5 novembre 2008 à 20:27:06

            Merci pour tes réponses Elias! :)
            • Partager sur Facebook
            • Partager sur Twitter

            Menu déroulant en Javascript

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown