Bonsoir,

je suis nul en JS, et je souhaite pouvoir agir sur ce script :
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';}
}

pour qu'un clic sur un élément ouvert le referme. J'ai un peu fouillé le forum, j'ai rien trouvé à ce sujet.

Any help ?
Modifié par kuvett (01 Mar 2006 - 10:15)
Alors j'ai trouvé une solution alternative élégante en appliquant ceci :
<dt onclick="javascript:montre('smenu5');" onmouseout="javascript:montre('');"></dt>
    <dd onmouseover="javascript:montre('smenu5');" onmouseout="javascript:montre('');">
         ...

C'est po mal, mais ça pique un peu les yeux quand on souhaite aller de la catégorie 1 à la catégorie 2, par exemple (le sous menu s'eclipse, et la catégorie que vous aviez sous votre souris, ben elle est plus là).

Mais faute de mieux, je prends. NEANMOINS, si quelqu'un a le bout de JS qui va bien pour refermer au clic... Smiley langue
Modifié par kuvett (24 Feb 2006 - 14:37)
kuvett a écrit :
pour qu'un clic sur un élément ouvert le referme. J'ai un peu fouillé le forum, j'ai rien trouvé à ce sujet.

J'avais vu ça, d'où ma réponse précédente, mais depuis, je l'ai abandonné, c'est pas top. En fait, je cherche à refermer au clic, pas en mouseover.
Salut,
Faut essayer avec "onclick".

<dt onmouseover="javascript:montre('smenu1');" onclick="javascript:montre('');">Menu 1</dt>
	<dd id="smenu1">
	<ul>
        ....

Ca devrait marcher
Smiley smile
Modifié par Alan (27 Feb 2006 - 13:22)
oui, effectivement, ça marche, mais c'est encore une ritournelle, un chemin de traverse, une pirouette. Mais ça semble quand même pas mal.

Personne ne sait vraiment comment faire pour qu'un clic ouvre, et un deuxieme clic ferme ?
Modifié par kuvett (01 Mar 2006 - 10:16)
Trouvé !

Voila le code javascript, le html ne change pas :
<script type="text/javascript">
window.onload=hide;

function hide() {
	for (var i = 1; i<=10; i++) {
			if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
		}
}

function montre(id) {
	var d = document.getElementById(id);
	if (d.style.display=='none') {
		
		for (var i = 1; i<=10; i++) {
			if ((document.getElementById('smenu'+i)) && ('smenu'+i != id)) {document.getElementById('smenu'+i).style.display='none';}
		}
		d.style.display='block';
	}
	else {
		d.style.display='none';
	}
}
</script>

Et voila.
kuvett a écrit :
oui, effectivement, ça marche, mais c'est encore une ritournelle, un chemin de traverse, une pirouette. Mais ça semble quand même pas mal.

Personne ne sait vraiment comment faire pour qu'un clic ouvre, et un deuxieme clic ferme ?

Salut,

Je vois que tu as l'âme poétique...
Je pensais que tu voulais juste que ça se referme au clic, et que ça s'ouvre comme dans le tuto, avec onmouseover.
Modifié par Alan (01 Mar 2006 - 12:21)
kuvett a écrit :
Trouvé !

Voila le code javascript, le html ne change pas :
<script type="text/javascript">
window.onload=hide;

function hide() {
	for (var i = 1; i<=10; i++) {
			if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
		}
}

function montre(id) {
	var d = document.getElementById(id);
	if (d.style.display=='none') {
		
		for (var i = 1; i<=10; i++) {
			if ((document.getElementById('smenu'+i)) && ('smenu'+i != id)) {document.getElementById('smenu'+i).style.display='none';}
		}
		d.style.display='block';
	}
	else {
		d.style.display='none';
	}
}
</script>

Et voila.



Merci et bien joué je le cherchait aussi Smiley biggrin
Bonjour,

Vos informations m'ont été très utiles. j'ai utilisé le principe des menu pour mettre des contenus plus importants.

J'aimerai établir un lien vers une section cachée avec des parties cachées (jusque là je sais faire avec les A HREF=#...) mais j'aimerai qu'en plus le contenu de la section désignée s'ouvre alors par défaut.

Connaissez-vous les données à spécifier ?

Merci d'avance

Véronique
sourire_979 a écrit :
Bonjour,

Vos informations m'ont été très utiles. j'ai utilisé le principe des menu pour mettre des contenus plus importants.

J'aimerai établir un lien vers une section cachée avec des parties cachées (jusque là je sais faire avec les A HREF=#...) mais j'aimerai qu'en plus le contenu de la section désignée s'ouvre alors par défaut.

Connaissez-vous les données à spécifier ?

Merci d'avance

Véronique


Bonjour sourire_979 et bienvenue sur Alsacréations Smiley smile ,

Ce sujet est résolu et ta question est différente. Merci d'ouvrir un nouveau sujet.
Igor a écrit :


Ce sujet est résolu et ta question est différente. Merci d'ouvrir un nouveau sujet.


Pas sûr..... En fait, la nouvelle façon trouvée par Kreat ne fonctionne pas sous Safari et Firefox Mac.

Lorsqu'on passe le curseur sur les boîtes, le nous-menu n'apparaît pas si on est sur le texte. Le comportement se fait seulement sur la boîte qui le contient; c'est très désagréable comme effet
largowin a écrit :

Pas sûr..... En fait, la nouvelle façon trouvée par Kreat ne fonctionne pas sous Safari et Firefox Mac.


Peut-être mais autant faire un nouveau sujet, on ne part pas du même code, des mêmes pages etc. Smiley cligne . De toute façon on n'a pas de nouvelles.
Igor a écrit :

De toute façon on n'a pas de nouvelles.


Oh la la! Je n'avais pas regardé la date originale du post!