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 :

Menu déroulant et mouseover


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Par défaut Menu déroulant et mouseover
    Bonjour,
    Je cherche à faire un menu déroulant, j'ai utilisé le code suivant. Les sous-menu apparaissent quand la souris les survole. Mais lorsque la souris quitte le menu et se place à sa droite, à sa gauche ou au dessous, le menu ne se referme pas. Il se referme juste quand elle est au dessus. Comment faire ? Merci !

    Code : 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
    22
    23
    24
    <div id="menu">
        <dl>
          <dt onmouseover="javascript:montre();"><a href="" title="Retour &agrave; l'accueil">Accueil</a></dt>
        </dl>
        <dl>
          <dt onmouseover="javascript:montre('smenu1');">Menu1</dt>
          <dd id="smenu1">
            <ul>
              <li><a href="droitetstatut.html">Sousmenu1-1</a></li>
              <li><a href="#">Sousmenu2-2</a></li>
               </ul>
          </dd>
        </dl>
        <dl>
          <dt onmouseover="javascript:montre('smenu2');">Menu2</dt>
          <dd id="smenu2">
            <ul>
              <li><a href="#">Sousmenu2-1</a></li>
              <li><a href="#">Sousmenu2-2</a></li>
                    </ul>
          </dd>
        </dl>
             </div>
    </div>
    Et le javascript :

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

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour et bienvenue sur Developpez ,
    il faut aussi que tu appelles ta fonction sur onmouseover ...

    ... et que tu enlèves le "Javascript:" dans le code des évènements

    A+

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 397
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Bonjour et bienvenue sur Developpez ,
    il faut aussi que tu appelles ta fonction sur onmouseover ...

    ... et que tu enlèves le "Javascript:" dans le code des évènements

    A+

    onmouseout plutôt que onmouseover, si on veut faire disparaitre le menu quand la souris n'est plus dessus.

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par tusssss Voir le message
    onmouseout plutôt que onmouseover, si on veut faire disparaitre le menu quand la souris n'est plus dessus.
    Exact, bien sûr !
    Mon clavier a fourché

    Merci de la correction

    A+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Par défaut
    Que veut dire "enlever le javascript dans le code des évènements ?
    J'ai essayé d'ajouter un effet onmouseout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <dl onmouseout="cache('smenu1');"> ?
    avec la définion de la fonction cache :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    window.onload=cache; 
    function cache(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='none';} 
    } 
    window.setTimeout("cache()",6000);
    Mais ça ne marche pas...
    Est-ce que c'est de cette façon qu'il faut faire ?
    Merci pour vos réponses !

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    En fait, non

    Ca aurait dû être bon comme ça : c'est le fonctionnement prévu avec la fonction montre().
    Quand tu survoles un menu, elle cache tous le menus (boucle for() ), puis affiche celui survolé (dont l'id est passé en paramètre) ...
    Si ça ne fonctionne pas, c'est peut-être que tu as une erreur, non ?

    Pour le problème de "Javascript:", tu as trouvé tout seul : c'est comme tu as fait pour le onmouseout (sans "Javascript:", donc).

    ... et les balises [code], c'est avec le bouton "#" de l'éditeur dans lequel tu écris tes messages

    A+

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Ca aurait dû être bon comme ça : c'est le fonctionnement prévu avec la fonction montre().
    D'ailleurs, ça fonctionne avec IE6 et Firefox

    A condition d'enlever les "javascript:" (comme l'impression de me répéter, là )

    A+

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Par défaut
    J'ai enlevé les "javascript:" mais avec IE7 j'ai le même fonctionnement, le menu ne se referme pas quand on met la souris à droite du menu

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Par défaut
    Bon finalement j'ai trouvé comment refermer le menu quand la souris est au dessous en ajoutant :
    <dl>
    <dt onmouseover="javascript:montre();"></dt>
    </dl>
    à la fin du menu.

    Par contre, il reste toujours ouvert lorsque la souris est à sa droite.
    Si quelqu'un à une idée...

Discussions similaires

  1. Menu déroulant afficher / masquer avec mouseover
    Par Invité dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 10/09/2009, 18h52
  2. Dimensions d'un Menu déroulant
    Par polo-j dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/02/2005, 14h26
  3. Menu déroulant valeur par défaut
    Par Gourouni dans le forum ASP
    Réponses: 11
    Dernier message: 06/12/2004, 16h31
  4. Menu déroulant suite au passage sur un TMenuItem
    Par James_ dans le forum C++Builder
    Réponses: 2
    Dernier message: 05/05/2004, 14h31

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