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 :

Faire disparaître une liste de menu déroulant avec onmouseout


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 28
    Points
    28
    Par défaut Faire disparaître une liste de menu déroulant avec onmouseout
    Salut à tous,
    J'aurais besoin de votre aide pour gérer un onmouseout sur un menu déroulant. Je m'explique : j'ai un menu déroulant dont voici une portion de code HTML:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <dl>	
      <dt onmouseover="javascript:montre('smenu1');"   onmouseout="javascript:cache('smenu1')";>Métiers</dt>
    	<dd id="smenu1">
    	  <ul>
    	       <li><a href="#">item 1</a></li>
    	       <li><a href="#">item 2</a></li>
                   <li><a href="#">item 3</a></li>
    	  </ul>
            </dd>
    </dl>
    Quand je fais un rollover sur un item, les sous-menus apparaissent (aucun souci jusque là...). J'ai géré cet événement grâce à une petite fonction javascript :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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';}
    }

    J'ai essayé de gérer le onmouseout, pour que les sous-menus disparaissent lorsque le curseur n'est pas dessus, mais ma fonction ne marche pas comme je veux :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function cache(id) {
    var d = document.getElementById(id);
    	for(var i=1;i<=10;i++) {
    		if(d){ //ou if(document.getElementById('smenu'+i))
    			document.getElementById('smenu'+i).style.display='none';
    		}
    	}
    }
    Quand je fais un rollover sur les sous-menus, ils disparaissent !
    J'ai fait pas mal d'essais pour corriger ce bug, mais à chaque fois sans succès ! :-(
    A l'aiiiiiide !

  2. #2
    Rédacteur
    Avatar de MasterOfChakhaL
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2004
    Messages
    2 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 147
    Points : 3 264
    Points
    3 264
    Par défaut
    Salut et bienvenue à toi sur les forums de developpez.com,

    Est-ce que tu as essayé de mettre le code qui doit cacher ton élément sur l'élément dd?
    i.e:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <dl>	
      <dt onmouseover="javascript:montre('smenu1');">Métiers</dt>
      <dd id="smenu1" onmouseout="javascript:cache('smenu1');">
        <ul>
          <li><a href="#">item 1</a></li>
          <li><a href="#">item 2</a></li>
          <li><a href="#">item 3</a></li>
        </ul>
      </dd>
    </dl>

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Oui, j'ai déjà essayé (même pour la balise ul)... le problème reste le même, sauf pour le 1er item du menu déroulant, où les choses se passent tel que je le voudrai. :-/

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Je pense avoir trouvé la solution à mon problème ... en mettant onmouseout="javascript:cache('smenu2')";, sur la dernière balise li de chaque ul, ça marche ! :-)

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Enfin, c'est pas vraiment ce que je voulais... dans ce cas, l'utilisateur est obligé de passer le curseur sur le dernier item pour que le menu disparaisse... pas génial si ces derniers sont nombreux ! :-S
    En fait, ce que je voulais au départ, c'est que dès que le curseur n'est plus sur le menu ou les sous-menus, les sous-menus disparaissent...

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Points : 166
    Points
    166
    Par défaut
    en flash ca se fait tres bien

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Lol ! Je m'en doute mais je dois développer un site en utilisant HTML/CSS...^^

  8. #8
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 143
    Points
    11 143

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Merci beaucoup Auteur !
    J'ai *enfin* résolu mon problème... ouf !
    Maintenant mon menu déroulant est impec' et marche sur la plupart des navigateurs récents... trop cool ! En plus, je voulais gérer un clearTimeout, et c'est chose faite !

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

Discussions similaires

  1. [XL-2003] Menu déroulant avec une liste principale et une liste secondaire
    Par bbcancer dans le forum Excel
    Réponses: 2
    Dernier message: 03/05/2011, 13h50
  2. faire apparaitre une Liste déroulante
    Par yaboki dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/12/2008, 18h52
  3. [MySQL] Menu déroulant avec des données d'une base MySQL
    Par kamclasse dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 06/08/2008, 17h02
  4. Faire apparaitre une liste déroulante dans un tableau
    Par AsQuel dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/07/2007, 17h20
  5. Réponses: 4
    Dernier message: 15/05/2007, 16h31

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