Bonjour à tous, c'est mon premier post sur Alsacréations.
J'ai fait le tutoriel du menu déroulant vertical et tout marche à la perfection...
Mais j'aimerai que lorsque que je clic sur un sous menu, le menu principal de celui-ci reste ouvert.
Que la fermeture d'un menu ne se fasse qu'avec un clic sur un autres menu principal.
Parce que pour le moment, à chaque clic sur un lien et tout se ferme!

Je suppose que la solution se trouve dans le code javascript mais je suis trop rouillé que pour y arrivé seul et je n'ai vu aucun cas similaire dans le forum.

Voici mon code (identique à celui du tutoriel) :


window.onload=montre;
function montre(menu) {
var d = document.getElementById(menu);
	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';}
}


Si quelqu'un savait m'aider ou me donner une piste..

Merci
C'est exactement le meme menu que moi, mais comme aucun lien n'est affecté aux sous-menu, il ne se passe rien.
Bonjour !

J'ai exactement le même problème que toi Minik : le Javascript est identique à celui du tuto, la construction du menu idem.
Mais mis en application avec des liens, les sous-menus vont se cacher directement après "cliquage".

En espérant que quelqu'un nous éclaire notre lanterne.
Merci d'avance.
Bonjour tout le monde !

Je dois porter la poisse aux sujets où je poste... ^^
Serait-il possible s'il vous plaît d'avoir une réponse à ce "problème"?
Bonjour à toutes et à tous,
je viens à l'instant de m'inscrire sur le forum et je voudrais également obtenir ce résultat (sous-menus qui restent affichés lorsque l'on arrive sur la page - uniquement ceux de la rubrique choisie). J'ai pensé qu'il serait plus judicieux de poster ici plutôt que de créer un nouveau sujet.
J'espère avoir bien fait.
Merci par avance.
Salut Smiley cligne ,

C'est normal qu'en l'état l'affichage d'une nouvelle page (ou même le rechargement de la page par F5) 'referme' les sous-menus puisque la ligne window.onload=montre; est exécutée.

Pour faire ce que vous voulez, il faut déterminer en fonction de la page affichée quel menu est à 'déplier' et éxécuter le montre('smenuX'); qui va bien. Smiley smile

Pour être plus clair, à partir du lien donné par Mikachu, si je clique sur une des lignes Sous-Menu 3.1, la page appelée devra contenir :
montre('smenu3');

Par exemple :
<body onfocus="javascript:montre('smenu3');">

Comme je ne suis pas un pro de javascript ce n'est peut-être pas le plus élégant à faire mais bon Smiley lol .

A+
Modifié par Heyoan (20 Jul 2007 - 16:22)
Merci pour ton intervention, l'idée y est ... Mais je me dois de préciser :
- je voudrais également que le lien ayant servi pour ammener à la page en cours reste activé pour donner un repère constant à l'internaute.
- et mon menu étant dans un modèle, la partie du code que je devrais modifier sur chaque page se trouve "inactive" (non-modifiable). Si je peux éviter de refaire les pages une à une c'est toujours bon à prendre Smiley cligne

Je pensais que dans la partie :
 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';}
}
//-->
</script> 


on pouvait rentrer une "condition". Je suis loin d'être expert en code source mais je ne demande qu'à apprendre Smiley confused
Après un week-end ... Toujours pas de solution. J'ai pourtant bien cherché et n'étant pas habitué au code ce fût assez épique mais ça m'aura au moins permi d'apprendre quelques trucs.
Par contre pour cette histoire de menu vertical je sèche vraiment. Il me semble pourtant bien, comme je l'ai dit plus haut, qu'une "condition" bien placée pourrait indiquer quelle page est active et donc la manière dont le menu doit se comporter ...
Je vais en attendant essayer de me débrouiller avec la solution de Heyoan que je remercie encore.
Mea Culpa, une recherche appronfondie sur le forum m'a permi d'arriver à mes fins Smiley confused . Pour ma défense je dois préciser que je n'ai actuellement pas Internet à mon domicile je n'ai donc pas pû effectuer cette recherche durant le week-end.
Si ça peut servir à d'autres :
dans la partie
 window.onload=montre;

il suffit de remplacer =montre et de mettre à la place
=function(){montre('smenu');}

sur la page d'arrivée.
'smenu' étant le nom du menu concerné (celui qui doit rester affiché).