11548 sujets

JavaScript, DOM et API Web HTML5

Voilà ma page Smiley decu c'est pas la mienne, moi je m'occupe que du menu en fait)
http://www.darkside-snowboard.org/hauterive/

Ce que j'aimerais, c'est que lorsque l'on clique sur menu déroulant, si il y en a un autre d'ouvert qu'il se ferme automatiquement, mais je ne sais pas vraiment comment m'y prendre...

Voilà le css: (que pour le menu)


/*  ------------------------------------------
/*  Menu
/*  ------------------------------------------
*/
ul#nav {
width: 75%;
margin: auto;
text-align: center;
}
ul#nav ul li a {
font-size: 8pt;
color: #ccc;
text-indent: 10px;
}
ul#nav li a {
width: 160px;
font-weight: bold;
color: #fff;
padding-bottom: 5px;
}
ul#nav a:hover {
color: #ffff00;
}
html>body ul#nav.pde_nav li {
height: auto;
}
ul.pde_nav a,ul.pde_nav strong {
display: block;
padding: 0 0 0 1.2em;
}	
.pde_hide {
display: none;
}
.pde_show {
display: block;
}
.pde_parent {
background: url(images/plus.gif) 0 50% no-repeat transparent;
}
.pde_active {
background: url(images/minus.gif) 0 50% no-repeat transparent;
}


Et le Javascript:


function pde_init()
{
	var mp='pde_nav';
	var hp='pde_hide';
	var sp='pde_show';
	var pp='pde_parent';
	var pa='pde_active';
	var cu='current';
	var d,uls,i;
	if(!document.getElementById && !document.createTextNode){return;}
	d=document.getElementById('nav');
	if (!d){return;}
	pde_addclass(d,mp)
	uls=d.getElementsByTagName('ul');
	for (i=0;i<uls.length;i++)
	{
		if(pde_checkcurrent(uls[ii]))
		{
			pde_addclass(uls[ii].parentNode.firstChild,pa);
		} else {
			pde_addclass(uls[ii],hp);
			pde_addclass(uls[ii].parentNode.firstChild,pp);
			uls[i].parentNode.firstChild.onclick=function()
			{
				pde_swapclass(this,pp,pa);
				pde_swapclass(this.parentNode.getElementsByTagName('ul')[0],hp,sp);
				return false;
			}
		}
	}
	function pde_checkcurrent(o){
		if(pde_check(o.parentNode,cu)){return true;}
		for(var i=0;i<o.getElementsByTagName('li').length;i++)
		{
			if(pde_check(o.getElementsByTagName('li')[ii],cu)){return true;}
		}
		return false;
	}
	function pde_swapclass(o,c1,c2)
	{
		var cn=o.className
		o.className=!pde_check(o,c1)?cn.replace(c2,c1):cn.replace(c1,c2);
	}
	function pde_addclass(o,c)
	{
		if(!pde_check(o,c)){o.className+=o.className==''?c:' '+c;}
	}
	function pde_check(o,c)
	{
	 	return new RegExp('\\b'+c+'\\b').test(o.className);
	}
}
window.onload=function(){
	pde_init();
}
[/i]
Modifié par le rouge (20 Dec 2005 - 12:02)
Administrateur
Bonjour,

je laisse un autre modérateur déplacer le sujet dans le salon JS si c'est nécessaire (?).
J'aurais juste une remarque concernant l'italique qui apparait dans ton code: cela vient de la balise code qui interprète les tableaux de variables genre truc[ i] comme de la mise en forme italique; tu peux consulter le message d'annonce du salon Javascript/ECMAScript à ce sujet et éditer ton message pour modifier le code (en pensant à enlever tous les [ /i] rajoutés automatiquement par le Forum pour être valide W3C, sans quoi ça re-introduit un autre problème etc) Smiley smile
Oui, à part ça j'ai un autre problème, moi j'aimerais que le menu selectionné reste déroulé quand on change de page (dnas le menu selectionné seulement), mais je ne sais pas comment faire, qqn à une idée?

le site: http://www.darkside-snowboard.org/hauterive/

le javascript:
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';}
}


le css :

#menu {
width: 75%;
margin: auto;
text-align: center;
cursor: pointer;
}
#menu p, #menu p a {
color: #fff;
font-weight: bold;
}
#menu ul li a {
font-size: 9pt;
font-weight: bold;
color: #ccc;
padding-left: 10px;
}
#menu a:hover {
color: #ffff00;
}


Merciu du coup de main...
Personne ne pourrait m'aider???

J'ai ça comme site Let's go

Mais j'aimerais faire que lorsque on clique sur un quand il y a en a déjà un d'ouvert, il se ferme tout seul... (je parle évidemment des menus déroulants)

Merci...
C'est sympa, mais c'est pas ça que je cherche en fait...

J'aimerais que tout le sous-menu reste visible après avoir cliquer sur une des parties de ce sous-menu... (mais pour tous les sous-menu indépendemment) Avec les olutions que tu me montre, il y en a qu'un qui sera montrer...