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 :

Afficher les sous-menus par clic


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Points : 8
    Points
    8
    Par défaut Afficher les sous-menus par clic
    Bonjour,

    J'ai un problème avec un menu et ses sous-menus.

    Je désire quand on clique sur un menu, les sous-menus s'affichent, mais je ne sais pas pourquoi, cela n'affiche que les sous-menu du premier menu.

    Voilà le code :

    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
    $responses=mysql_query("select * from categorie");
    		$comt=1;
    		while($donner=mysql_fetch_array($responses))
     
    		{?>
        <ul > 
     <li ><a onclick="javascript: showmenu(document.getElementById('sousmenu'));"  
        href="#"><?php echo $donner['nomcategorie']; ?></a>
          <?php
             
             $respons=mysql_query("select *from souscategorie where idcaetgorie=".$donner['idcategorie']);?>
            <ul id="sousmenu" style="display:none">
    		<?php while($donne=mysql_fetch_array($respons)) {?>
                <li id="sousmen"><a href="#"><?php echo $donne['nomsoucategorie'] ?></a>       </li>
             <?php  }; ?>    
            </ul> 
          </li>  
     
        </ul>
    	<?php }; ?> 
          <p>
    Merci de votre aide !

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Normal...
    getElementById (comme son nom l'indique fort bien) récupère l'élément dont l'id est passé en paramètre.
    Sachant qu'un id doit être unique dans la page, seul le premier élément est retourné.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    bonjour
    alors c est quoi la solution ça fait 3 jour que j ai ce problème je trouve pas une solution

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Et bien de rendre les id uniques...
    Par exemple en rajoutant des indices au niveau de la boucle.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    oui je l a fait mais ça marche pas je mettait un champs de base de donne dans l id mais ça marche pas

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 207
    Points : 344
    Points
    344
    Par défaut
    Essaye avec ceci :

    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
    <?php
            $responses=mysql_query("select * from categorie");
            $cpt=1;
            while($donner=mysql_fetch_array($responses))
            {
    ?>
    	<ul> 
    	<li><a onclick="javascript:showmenu(document.getElementById('sousmenu<?=$cpt?>'));" href="#"><?php echo $donner['nomcategorie']; ?></a>
    	<?php
            $respons=mysql_query("select *from souscategorie where idcaetgorie=".$donner['idcategorie']);?>
    	<ul id="sousmenu<?=$cpt?>" style="display:none;">
    	<?php while($donne=mysql_fetch_array($respons)) {?>
    		<li id="sousmen"><a href="#"><?php echo $donne['nomsoucategorie'] ?></a></li>
    	<?php }; ?>
    	</ul>
    	</li>
    	</ul>
    <?php } ?>
    Sébastien Courjean
    Développeur Web
    scourjean@cyres.fr
    http://www.cyres.fr/

  7. #7
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    oui j ai fait la même chose mais ça marche pas j ai fait une autre méthode
    j ai rempli les sous menus manuellement je fais ce code de methode
    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
    function masquer(sousmenu)
    {
    tab= new Array(2) ;
    tab[0]='sous1' ;
    tab[1]='sous2' ;
    tab[2]='sous3' ;
    for( i=0 ; i<=2 ; i++)
     {     
    if (tab[i]==sousmenu)
     {
    	  obj=document.getElementById(sousmenu);
          obj.style.display="block" ;
             } 
    		 else
    		 {
    		  obj=document.getElementById(sousmenu);
          obj.style.display="none" ;
    		 }
    		}
     
    }
    j ai appel la méthode mais toujours ça marche pas
    premier appel :
    deuxième apple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     onclick="javascript :masquer('sous1');"

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 207
    Points : 344
    Points
    344
    Par défaut
    Essaye ça :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?php
            $cpt=1;
            while($cpt<5)
            {
            ?>
    	<ul> 
    		<li>
    			<a onclick="javascript:showmenu(document.getElementById('sousmenu<?=$cpt?>'));" href="#">Menu <?php echo $cpt; ?></a>
    			<ul id="sousmenu<?=$cpt?>" style="display:none;">
    			<?php for($j=0;$j<4;$j++) {?>
    				<li id="sousmen"><a href="#">Sous-menu <?php echo $cpt.".".$j; ?></a></li>
    			<?php 
                                    
                            }
                            ?>
    			</ul>
    		</li>
    	</ul>
    	<?php 
                    $cpt++;
            } 
    ?>
    <script type="text/javascript">
    	function showmenu(IdSsMenu){
    		for( i=1 ; i<<?=$cpt?> ; i++)
    		{ 
    			if ("sousmenu"+i == IdSsMenu)
    				document.getElementById("sousmenu"+i).style.display="block" ;
    			else
    				document.getElementById("sousmenu"+i).style.display="none" ;
    		}
    	}
    </script>
    Sébastien Courjean
    Développeur Web
    scourjean@cyres.fr
    http://www.cyres.fr/

  9. #9
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    bonjour
    je suis perdu
    le code ça marche pas
    voila le code que j ai ecrit
    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
    25
    26
    27
    28
    29
    30
    31
    32
       <div id="menu3">
         <?php  mysql_connect("localhost","root","");
    		mysql_select_db("cour");
    		$responses=mysql_query("select * from categorie");
    		?> <ul> <?php 
                    $cpt=1;
                    while($donner=mysql_fetch_array($responses))
                    {?>
     
    <li><a onclick="javascript:showmenu(document.getElementById('sousmenu<?=$cpt?>'));" href="#" ><?php echo $donner['nomcategorie'].$cpt; ?></a>
    <?php $respons=mysql_query("select * from souscategorie where idcaetgorie=".$donner['idcategorie']); ?>
            <ul id="sousmenu<?=$cpt?>" style="display:none;">
    		<?php while($donne=mysql_fetch_array($respons)) 
                    {?>
                <li><a href="#"><?php echo $donne['nomsoucategorie']; ?></a></li>
             <?php  }; ?>    
            </ul> 
          </li>  
      <?php $cpt++ ; }; ?>      
        </ul>
    <script type="text/javascript">
    function showmenu(IdSsMenu){
    		for( i=1 ; i<<?=$cpt?> ; i++)
    		{ 
    			if ("sousmenu"+i == IdSsMenu){
    				document.getElementById("sousmenu"+i).style.display="block" ;}
    			else{
    				document.getElementById("sousmenu"+i).style.display="none" ;}
    		}
    	}
    </script>
          </div>
    toujours même problème les sous menu s affichent pas
    merci pour votre aide

  10. #10
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Montre nous le code HTML généré mais pas le PHP.

    A+.

  11. #11
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    j utilise jquery ça marche bien avec jquery menu
    mais le seul problème que j ai quand j ai clique sur un lien de sous menu i
    il se ferme tous les sous menu de menu ouvert je veux quand je clique sur un sous menu les sous menus restent ouvert
    voila le code java script:
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    	  <ul class="navigation"> 
    	  <?php while($donner=mysql_fetch_array($responses))
                    {?>
        <li class="toggleSubMenu"><span><a href="http://localhost/sitebookdowland/donne.php?cat=<?php echo $donner['idcategorie'] ;?>"> <?php echo $donner['nomcategorie']; ?> </a></span>
    	<?php $respons=mysql_query("select * from souscategorie where idcaetgorie=".$donner['idcategorie']); ?>
            <ul class="subMenu"> 
    		<?php while($donne=mysql_fetch_array($respons)) 
                    {?>
                <li><a href="http://localhost/sitebookdowland/donne.php?scat=<?php echo $donne['idsoucategorie'] ;?>"  title=""><?php echo $donne['nomsoucategorie']; ?></a></li> 
    			<?php }?>
            </ul> 
     
        </li> 
    	<?php }?>
    </ul>
              <script type="text/javascript"> 
    <!-- 
    $(document).ready( function () { 
        // On cache les sous-menus : 
        $(".navigation ul.subMenu").hide(); 
        // On sélectionne tous les items de liste portant la classe "toggleSubMenu" 
     
        // et on remplace l'élément span qu'ils contiennent par un lien : 
        $(".navigation li.toggleSubMenu span").each( function () { 
            // On stocke le contenu du span : 
            var TexteSpan = $(this).text(); 
            $(this).replaceWith('<a href="" title="Afficher le sous-menu">' + TexteSpan + '<\/a>') ; 
        } ) ; 
     
        // On modifie l'évènement "click" sur les liens dans les items de liste 
        // qui portent la classe "toggleSubMenu" : 
        $(".navigation li.toggleSubMenu > a").click( function () { 
            // Si le sous-menu était déjà ouvert, on le referme : 
            if ($(this).next("ul.subMenu:visible").length != 0) { 
                $(this).next("ul.subMenu").slideUp("normal"); 
            } 
            // Si le sous-menu est caché, on ferme les autres et on l'affiche : 
            else { 
    		$(".navigation ul.subMenu").slideUp("normal"); 
                $(this).next("ul.subMenu").slideDown("normal"); 
            } 
            // On empêche le navigateur de suivre le lien : 
            return false; 
        }); 
        $(".navigation li.subMenu> a").click( function () { 
            // Si le sous-menu était déjà ouvert, on le referme : 
            if ($(this).next("ul.subMenu:visible").length != 0) { 
    $(this).next("li.subMenu:visible").length != 0   ;     } 
     
        });     
     
     
     
    } ) ; 
    // --></script>

Discussions similaires

  1. afficher les sous menus fils d'un menu père
    Par xavioche77 dans le forum jQuery
    Réponses: 16
    Dernier message: 25/03/2011, 22h07
  2. [IE 7] Les sous-menus ne s'affichent pas
    Par slowpoke dans le forum IE
    Réponses: 0
    Dernier message: 07/07/2009, 10h02
  3. Menu CSS : les sous menus ne s'affichent pas
    Par pci130 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 29/05/2009, 18h33
  4. Réponses: 2
    Dernier message: 12/03/2009, 13h29
  5. [DOM] Menu déroulant et DOM. Afficher les sous-menus cachés
    Par glenouve dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/11/2007, 10h42

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