Partage
  • Partager sur Facebook
  • Partager sur Twitter

Quelle fonction pour "désafficher" mon menu ??

Sujet résolu
    11 novembre 2008 à 21:35:20

    Bonjour, [J'ai créé un sujet similaire, mais j'attends une réponse assez rapidement si possible]

    J'ai un menu déroulant horizontal. Celui se met très bien en place avec du javascript et un "onmouseover" :

    window.onload=montre;
    function montre(id) {
    var d = document.getElementById(id);
    	for (var i = 1; i<=10; i++) {
    		if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
    	}
    if (d) {d.style.display='block';}
    }
    


    Le seul souci, c'est que quand j'enléve ma souris, le menu reste déroulé. Alors comment le faire disparaître ??


    En gros, quel est la fonction java qui peut faire disparaître mon menu quand ma souris n'est plus dessus ??
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      11 novembre 2008 à 21:53:12

      tu utilise onmouseover pour afficher , utilise onmouseout pour masquer ;)
      • Partager sur Facebook
      • Partager sur Twitter
        11 novembre 2008 à 22:01:16

        Oui d'accord, mais j'ai bien un autre code sur même genre que dans mon premier message a entrer non ??
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          11 novembre 2008 à 22:12:10

          fonction masque(id)
          {
          var d = document.getElementById(id);
          if (d) {d.style.display='none';}
          }
          • Partager sur Facebook
          • Partager sur Twitter
            11 novembre 2008 à 22:19:22

            J'ai appliqué ton code a mon cas en le transformant un peu pour avoir le même genre que le code précédent :

            window.onload=montre;
            function montre(id) {
            var d = document.getElementById(id);
            	for (var i = 1; i<=10; i++) {
            		if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
            	}
            if (d) {d.style.display='block';}
            }
            

            Voila le code pour montrer.

            Puis j'ai refait le code pour cacher, en changeant "montre" par "masque" :
            window.onload=masque;
            function masque(id) {
            var d = document.getElementById(id);
            	for (var i = 1; i<=10; i++) {
            		if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
            	}
            if (d) {d.style.display='block';}
            }
            


            Et ça ne marche pas ... Pourquoi ??

            Bon je sais je suis nul ... Un Zéro dans l'âme !!
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              11 novembre 2008 à 22:30:20

              dans ton menu tu dois avoir des :
              <element_html onmousover="montre(un_id);">

              tu dois faire :
              <element_html onmousover="montre(un_id);" onmouseover="masque(un_id);">

              et à mon avis le window.onload ne sert à rien
              • Partager sur Facebook
              • Partager sur Twitter
                12 novembre 2008 à 15:41:29

                Je te montre mes Javascript et mon menu parce qu là ça ne marche pas !!!!!

                Mon header :
                [...]
                <script type="text/javascript">
                <!--
                window.onload=montre;
                function montre(id) {
                var d = document.getElementById(id);
                	for (var i = 1; i<=10; i++) {
                		if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
                	}
                if (d) {d.style.display='block';}
                }
                //-->
                </script>
                
                <script type="text/javascript">
                <!--
                window.onload=masque;
                function masque(id) {
                var d = document.getElementById(id);
                	for (var i = 1; i<=10; i++) {
                		if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
                	}
                if (d) {d.style.display='block';}
                }
                //-->
                </script>
                



                Mon menu :
                <dl>			
                <dt onmouseover="javascript:montre('smenu1');" onmouseout="javascript:masque('smenu1');">Menu 1</dt>
                	<dd id="smenu1">
                		<ul>
                			<li><a href="#">Sous-Menu 1.1</a></li>
                			<li><a href="#">Sous-Menu 1.2</a></li>
                			<li><a href="#">Sous-Menu 1.3</a></li>
                			<li><a href="#">Sous-Menu 1.4</a></li>
                			<li><a href="#">Sous-Menu 1.5</a></li>
                			<li><a href="#">Sous-Menu 1.6</a></li>
                		</ul>
                	</dd>
                </dl>
                



                Qu'est-ce qui ne va pas dans tout ça ??
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  13 novembre 2008 à 18:43:51

                  Essaye ca, les window.onload n'ont aucune utilité ici :

                  <script type="text/javascript">
                  <!--
                  function montre(id) {
                    var d = document.getElementById(id);
                    for (var i = 1; i<=10; i++) {
                      if (document.getElementById('smenu'+i))  
                        {document.getElementById('smenu'+i).style.display='none';}
                    }
                    if (d) {d.style.display='block';}
                  }
                  
                  function masque(id) {
                    var d = document.getElementById(id);
                    if (d) {d.style.display='none';}  // Faut mettre display = none pour masquer
                  }
                  //-->
                  </script>
                  

                  <dl>
                  <!-- pas besoin de mettre "javascript:" pour ces évènements là (c'est forcément javascript -->
                  <dt onmouseover="montre('smenu1');" onmouseout="masque('smenu1');">Menu 1</dt>
                  	<dd id="smenu1">
                  		<ul>
                  			<li><a href="#">Sous-Menu 1.1</a></li>
                  			<li><a href="#">Sous-Menu 1.2</a></li>
                  			<li><a href="#">Sous-Menu 1.3</a></li>
                  			<li><a href="#">Sous-Menu 1.4</a></li>
                  			<li><a href="#">Sous-Menu 1.5</a></li>
                  			<li><a href="#">Sous-Menu 1.6</a></li>
                  		</ul>
                  	</dd>
                  </dt>  <!-- t'avais pas fermé le dt -->
                  </dl>
                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 novembre 2008 à 21:45:33

                    Alors, tout va bien c'est ce que je voulais ça se désaffiche ...
                    Mais deux problèmes sont apparus ...

                    Le premier c'est que quand je suis sur le titre "Menu 1", ça s'affiche, mais a partir du moment où je vais sur les liens du menu, ça disparaît.

                    Deuxième problème, quand je charge la page, mon menu se déroule et reste déroulé. il faut que j'aille sur un des titres pour que ça parte ...

                    Encore un peu de courage pour moi ... SVP !!
                    • Partager sur Facebook
                    • Partager sur Twitter
                      13 novembre 2008 à 21:56:24

                      Pourquoi ne pas faire ça en CSS ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        13 novembre 2008 à 22:07:48

                        Au départ c'est ce que je voulais faire, mais je n'ai rien trouvé de "potable" ... Si tu sais ou je peux trouver quelque chose de bien en CSS et compatible IE et Firefox, je suis tout à fait prés à changer tout ça !!!
                        • Partager sur Facebook
                        • Partager sur Twitter
                          14 novembre 2008 à 20:25:44

                          dt dd{display: none}
                          dt:hover dd{display: block}
                          


                          Essaye ça...
                          • Partager sur Facebook
                          • Partager sur Twitter
                            14 novembre 2008 à 21:19:37

                            Non, je préfére garder mon JS, parce que j'ai d'autres hover dans mon CSS et ça me fait tout bugué !!
                            A moins que vous ne me touviez la solution miracles avec mon CSS et mes deux scripts de menu !! ...
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Quelle fonction pour "désafficher" mon menu ??

                            × 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