Partage
  • Partager sur Facebook
  • Partager sur Twitter

setTimeOut

    8 avril 2009 à 22:01:42

    Bonjour, alors c'est la première fois que je poste sur ce forum. J'ai lu le tuto et la liste des questions.
    Alors ne m'en voulez pas si je fais des bétises :euh:

    Alors j'ai créé un menu dynamique avec du javascript , en gros quand la souris et sur le menu ça affiche un sous menu (classique quoi).
    J'ai voulu écarté le sous menu du menu mais de ce fait il disparaissait avant que j'y arrive si je n'y allait pas assez vite.

    J'ai donc voulu utiliser la fonction setTimeout pour retardé tout ça. Mais malheureusement quoi qu'il arrive le sous menu dispairait au bout du temps choisi avec setTimeout sans lancher la fonction prévu dans le cas du onmouseOver.
    (Désole si je ne suis pas clair, vraiment)

    <dt onmouseover="javascript:affiche('sousmenu1',10) onmouseout="javascript:affiche2( 1,2000);">  nom_gamme</dt>
    
    <dd style="display:none;" id="sousmenu1" onmouseover="javascript:affiche('sousmenu1',10);" onmouseout="javascript:affiche('',10); ">
    <ul>
    
    
    <li><a href="index.php?page=u&jpi=1" > sous menu 1 </a></li>
    <li><a href="index.php?page=u&jpi=2 "  > sous menu 2  </a></li>
    </ul>
    </dd>
    



    function affiche (id,nbelmenu) {
       
    var d = document.getElementById(id);
         
     // nombre d'éléments dans le menu
         
    for ( var i = 1 ; i <= nbelmenu ; i++ ) {
    if ( document.getElementById('sousmenu'+i) ) {
    
    document.getElementById('sousmenu'+i).style.display='none';
    }
    }
    if (d) {
    
    d.style.display='block';
    }
    }
    
    function cacher_retard (nb)
    {
    
    for ( var i = 1 ; i <= nb ; i++ ) {
    if ( document.getElementById('sousmenu'+i) ) {
    
    document.getElementById('sousmenu'+i).style.display='none';
    }
    }
    }
    /*onmouseout se lance plus tard */
    function affiche2 (nb,tps)
    {
    string = "cacher_retard("+nb+");";
    a = setTimeout(string,tps);
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      8 avril 2009 à 22:12:53

      Un truc du genre :
      <ul>
      	<li onmouseover="affiche(1);">  nom_gamme
      		<ul style="display:none" id="sousmenu1" onmouseout="affiche(0); ">
      			<li><a href="index.php?page=u&jpi=1" > sous menu 1 </a></li>
      			<li><a href="index.php?page=u&jpi=2 "  > sous menu 2  </a></li>
      		</ul>
      	</li>
      </ul>
      
      <script type="text/javascript">
      function affiche(id) {
      	var nbr = <?php echo $max ?>;
      	for (var i=1;i<=nbr;i++) {
      		if (document.getElementById('sousmenu'+i)) {
      			if(i == id)
      				document.getElementById('sousmenu'+i).style.display='block';
      			else
      				document.getElementById('sousmenu'+i).style.display='none';
      		}
      	}
      }
      </script>
      
      • Partager sur Facebook
      • Partager sur Twitter
        8 avril 2009 à 22:44:06

        Merci beaucoup , mais avec cette methode le sous menu apparait en dessous. Alors que je veux qu'il apparraissee sur la droite
        comme sur le second screen

        Quand la souris n'est pas au dessus
        Image utilisateur

        Quand la souris au au dessus
        Image utilisateur

        L'ennuie c'est que au bon du temps choisi pour le setTimeout, le sous menu disparait.
        Ce qui signifie que le onmouseOver du sous menu ne fonctionne pas bien.
        • Partager sur Facebook
        • Partager sur Twitter
          8 avril 2009 à 23:00:44

          -_-
          On crache pas du code ici !
          Tu as bien vu que j'ai modifié ton code, j'ai changé les balises, adapte ton css pour le premier point.
          Et pour le second, ya pas besoin de Timeout, des que tu passe sur un autre sous menu ou que tu sors du sous menu, ca s'enleve.
          • Partager sur Facebook
          • Partager sur Twitter
            9 avril 2009 à 9:51:52

            j'ai pas demandé à avoir du code hein.
            C'est que je recherchais une méthode qui fasse disparaitre le sous menu même si on allait pas dessus.
            Comme le lien de nod_ en somme.
            J'ai pas demandé à ce qu'on me mache le travaille, t'énerve pas.

            En tout cas merci nod_ pour t'on lien, ça devrait m'aider.
            Et merci à Timot mon code est nettement plus propre comme ça.
            • Partager sur Facebook
            • Partager sur Twitter

            setTimeOut

            × 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