Onglet actif menu déroulant
TeeZor
Messages postés
23
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
j'ai un menu vertical pour mon site basé sur celui-ci: https://css.developpez.com/galerie/demo/menus/verticalderoulant2/
Mon code php est le suivant:
et voici le code js:
Ma question c'est: comment garder le menu déroulé lorsque je suis sur une des pages lui correspondant ? Dans l'url je récupère l'id de ma rubrique, je peux certainement m'en servir mais je ne sais pas comment?
Merci
j'ai un menu vertical pour mon site basé sur celui-ci: https://css.developpez.com/galerie/demo/menus/verticalderoulant2/
Mon code php est le suivant:
<div class="menu">
<?php
$i = 0;
$query = $db->prepare("SELECT * FROM rubrique WHERE idCategorie = :id");
$query->execute();
while($rubrique = $query->fetch(PDO::FETCH_OBJ)){
$i++;
echo"
<div class=\"menu\" id=\"menu".$i."\" onclick=\"afficheMenu(this)\">
<a href=\"#\">{$rubrique->nomRubrique}</a>
</div>
<div id=\"sousmenu".$i."\" class=\"sousmenu\">";
$query = $db->prepare("SELECT * FROM page WHERE idRubrique = :id");
$query->execute(array('id' => $rubrique->idRubrique));
while($ligne = $query->fetch(PDO::FETCH_OBJ)){
echo "
<a href=\"/rubrique/".$ligne->idRubrique."/page/id/{$ligne->idPage}/".$ligne->titre.".html\">{$ligne->titre}<a/>
<br />";
}
echo"</div>";
}
?>
</div>
et voici le code js:
function afficheMenu(obj){
var idMenu = obj.id;
var idSousMenu = 'sous' + idMenu;
var sousMenu = document.getElementById(idSousMenu);
$sousMenu = $(sousMenu);
$(".sousmenu").each(function() {
if($(this).attr("id") != idSousMenu) {
$(this).hide();
}
});
if($sousMenu.is(':hidden')) {
$sousMenu.show();
} else {
$sousMenu.hide();
}
}
Ma question c'est: comment garder le menu déroulé lorsque je suis sur une des pages lui correspondant ? Dans l'url je récupère l'id de ma rubrique, je peux certainement m'en servir mais je ne sais pas comment?
Merci
3 réponses
-
salut, je vais peut être dire une bêtise, mais je la dis tout de même.
dans le code original, les sous menu sont en display:none dans la balise même.
j'imagine que dans ta class sousmenu tu a fait la même chose.
Si tu récupère un id dans ton url qui est égale a ta variable $i, alors tu peu facilement faire ceci:
<?php if(isset($_GET['id']) && $_GET['id'] == $i){ echo 'style="display: block"'; } else{ echo 'style="display: none"'; } ?>
de cette manière si tu récupère un id par la method get et que celui ci est égale a ta variable $i le sous menu sera affiché
׺°"~'"°º×]|I{*------» m3745p10!7 «------*}I|[׺°"~'"°º×-
Bonjour,
merci pour la réponse.
Oui c'est bien ce que j'ai fais pour ma class sousmenu, je la display none par défaut.
Où dois-je insérer exactement le code que tu m'as fourni?
J'ai tenté:
if(isset($_GET['id']) && $_GET['id'] == $i){ echo " <div id=\"sousmenu2".$j."\" class=\"sousmenu2\">"; } else{ echo " <div id=\"sousmenu".$j."\" class=\"sousmenu\">"; }
avec la class sousmenu2 qui display en block, mais sans succès.
Ne devrais-je pas plutot intervenir dans le code js ?
-
-
J'ai fait 4 pages ou les menu sont gérer grâce a des boucles
voici le code de l'une d'entre elle
<body> <h1>page1</h1> <div id="menu"> <?php for($i=1; $i<5;$i++){ ?> <div class="menu" id="menu<?php echo $i; ?>" onclick="afficheMenu(this)"> <a href="#">Menu <?php echo $i; ?></a> </div> <div id="sousmenu<?php echo $i; ?>" <?php if(isset($_GET['id']) && $_GET['id'] == $i){ echo 'style="display: block"'; } else{ echo 'style="display: none"'; } ?>> <?php for($a=1; $a<5;$a++){ ?> <div class="sousmenu"> <a href="index<?php echo $i.".php?id=".$i; ?>">Sous-Menu <?php echo $i.".".$a; ?></a> </div> <?php } echo '</div>'; } ?> </div> <script type="text/javascript"> function afficheMenu(obj) { var idMenu = obj.id; var idSousMenu = 'sous' + idMenu; var sousMenu = document.getElementById(idSousMenu); /*****************************************************/ /** on cache tous les sous-menus pour n'afficher **/ /** que celui dont le menu correspondant est cliqu? **/ /** o? 4 correspond au nombre de sous-menus **/ /*****************************************************/ for (var i = 1; i <= 4; i++) { if (document.getElementById('sousmenu' + i) && document.getElementById('sousmenu' + i) != sousMenu) { document.getElementById('sousmenu' + i).style.display = "none"; } } if (sousMenu) { //alert(sousMenu.style.display); if (sousMenu.style.display == "block") { sousMenu.style.display = "none"; } else { sousMenu.style.display = "block"; } } } </script>
voici le code en action
http://pour-ccm.zz.mu/index1.php
si tu comprends pas ce que j'ai fait dis le moi mais c'est tout simple
׺°"~'"°º×]|I{*------» m3a745p10!7 «------*}I|[׺°"~'"°º× -