Probleme affichage/masquer menu vertical

Résolu
neolin85 Messages postés 8 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 30 mars 2007 - 29 mars 2007 à 16:00
neolin85 Messages postés 8 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 30 mars 2007 - 30 mars 2007 à 21:41
Bonjour à tous, j'ai developpé un petit code qui permet de faire un menu horizontal avec des menus verticaux pour chaque clique sur le menu.
J'ai un petit souci que j'arrive pas a resoudre. En fait, je veut que lorsque je clique une deuxieme fois sur le menu vertical(sous Menu) affiché ce dernier soit caché.

Merci d'avance.

Code :
<HTML>
<HEAD>
<TITLE> Menu horizontal </TITLE>
<SCRIPT language='JavaScript'>

function selectionner(obj){
    obj.style.backgroundColor="red";
}

function deselectionner(obj){
    obj.style.backgroundColor="orange";
}

function afficherMenu(obj,parGauche,parHaut,indice){
    var n=3;    
    content="\";
    for(i=1;i<=n;i++)    
        content+='----
Sous-Menu'+indice+'-'+i+', ';
    content+='<TABLE>';
    document.getElementById(\"pendule2\").innerHTML=content;    
}
</SCRIPT>
</HEAD>

<SCRIPT>
var n=6;
var gauche=10,haut=37;
var tmp=\"<TABLE cellspacing=1 width=600px>----
\";
    for(i=1;i<=n;i++){
        tmp+='choix'+i+', ';
        gauche+=100;
    }
tmp+="
";
document.getElementById("pendule1").innerHTML=tmp;
</SCRIPT>

</HTML>

6 réponses

Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
30 mars 2007 à 09:54
Bonjour, je te propose une autre solution

remplace ta méthode d'ouverture afficherMenu(...) par celle ci

function afficherMenu(obj,parGauche,parHaut,indice){
        // si les menus ouvert précedement est différent du menu actuel
        if ( document.body.openedMenu != obj){
            // vide le contenu de "pendule2"
            document.getElementById("pendule2").innerHTML ="";
            // remets le contrôle à vide.
          document.body.openedMenu= null;
        }
        // si aucun menu ouvert alors on va ouvrir le menu
        if ( !document.body.openedMenu ){
        var n=3;   
        content="<TABLE cellspacing=1 width=100px style='position:absolute;left:"+parGauche+";top:"+parHaut+"'>";
        for(i=1;i<=n;i++)   
            content+='<TR><TD style="height:5px; text-align:center;background-color:orange;" >Sous-Menu'+indice+'-'+i+'</TD></TR>';
        content+='<TABLE>';
        document.getElementById("pendule2").innerHTML=content;   
        // stock dans le body.openedMenu l'objet ayant demandé le menu
        document.body.openedMenu = obj;
      }
      else{
          document.getElementById("pendule2").innerHTML ="";
          // supprime le menu ouvert dans le body.openedMenu
          document.body.openedMenu= null;
      }
}

Il y a quelques commentaires mais si tu as besoins d'aide, pas de problème.
Le principe est de stocké dans le body ( pour éviter une variable globale ... ) l'obj ayant demandé le menu, et le tour est joué ;o)

[o-_-o]
3
stfou Messages postés 450 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 18 avril 2007 3
29 mars 2007 à 18:51
Dans ce cas, objec.style.display="none"; est ton amis ;) et l'inverse c'est "block".
Bonne chance

<hr /><hr />
STFOU
0
neolin85 Messages postés 8 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 30 mars 2007
29 mars 2007 à 21:14
Il faut le mettre ou obj.style.display="none" ?
0
stfou Messages postés 450 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 18 avril 2007 3
29 mars 2007 à 21:25
Bonsoir, par exemple : document.getElementById("pendule2").style.display="none"; si tu veux faire disparaître cet objet.

<hr /><hr />
Stfou
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
neolin85 Messages postés 8 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 30 mars 2007
29 mars 2007 à 21:32
Bon soir,
oué mais le probleme si je met : document.getElementById("pendule2").style.display="none";  à la fin de ma fonction afficherMenu() le menu va disparaitre sans qu'on voit la transition
0
neolin85 Messages postés 8 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 30 mars 2007
30 mars 2007 à 21:41
merci bien ça marche nikel.
a++
0
Rejoignez-nous