11484 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

je débute en JavaScript et je coince.
Je veux fermer un menu déroulant avec la fonction suivante, lancée avec un clic sur la petite croix :

<div class="nav">
<div id="menuToggle">

	<ul id="menu">
	<li><a href="#">Jembés</a>
		<ul>			
			<li><a href="#" style="margin-left:8em"  onClick="closemenu();return(false)">x</li></a>
			<li><a href="Jembes.html">Jembés montage</a>
			<li><a href="Vulcain.html">Vulcain, presse à jembés</a>
			


Et le js :

<script>
    
function closemenu()
	{
    	if(document.getElementById)
        	document.getElementById("menu").style.visibility = 'hidden';
    	}
      </script>


C'est tout simple, et ça fonctionne, mais le problème est que tout le menu disparaît de ma page à chaque clic sur la croix. Il faut recharger cette page pour le voir de nouveau. Je fais ça pour les appareils tactiles sur lesquels mon menu déroulant ne se referme pas quand on soulève le doigt. Alors qu'avec une souris, il n'y a pas besoin de js.
Il y a bien l'option .getElementByTagName, mais je n'arrive pas à pointer ul ou li, afin de refermer que ce qui s'est déroulé, et non pas tout le menu.
Une idée ?
Merci.
Modifié par Bongota (14 Nov 2018 - 14:48)
Modérateur
Salut,

Tu peux mettre un id "sousmenu" sur ton deuxième <ul> pour l'attraper directement dans le Js
Merci pour la réponse,

j'ai essayé, mais sans doute il y avait un oubli dans mon code, ça n'a pas fonctionné. Et est-ce bien élégant de procéder de cette façon ? J'ai aussi vu que l'on pouvait cascader les commandes js, pour atteindre autre chose qu'un ID, dans le genre:

if(document.getElementById)
        	document.getElementById("ID") document.getElementsByTagName("tag").style.visibility = 'hidden';


mais ça n'a pas fonctionné non plus.
Je vais revoir ta méthode.
Bonjour,

ah oui, ça fonctionne avec un <ul> sousmenu ! J'avais oublié un > fermant. Le menu déroulant se ferme bien.
Le problème maintenant, c'est que ce menu devient inerte, après ce retour. Il ne veut plus se dérouler et il faut recharger la page. Aussi, maintenant qu'il y a deux <ul>, il faut bien les refermer quelque part, mais mes tentatives ont complètement détruites la mise en page du menu, pour le moment.
Je continue d'expérimenter.

Merci pour l'aide.