28220 sujets

CSS et mise en forme, CSS3

Je voudrais intégrer deux menus déroulants à ma page, comme celui de Pompage.
Le problème c'est que ce menu fonctionne avec un id et que le javascript pour IE se sert de cet id :


sfHover = function() {
	var sfEls = document.[#red]getElementById("nav")[/#].getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

[/i][/i]
Est-il possible d'adapter ce code pour pouvoir l'appliquer à plusieurs id ?
Du style getElementById("nav, nav2")

Pour le moment, tout ce que j'ai trouvé, c'est de créer une 2ième fonction identique :

sfHover = function() {
	var sfEls = document.getElementById("nav").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

sfHover2 = function() {
	var sfEls = document.getElementById("nav2").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover2);


[/i][/i][/i][/i] Mais c'est pas très propre comme code, je suppose qu'il y a moyen de faire plus simple.
Modifié par cedb3 (31 Mar 2005 - 17:42)
Résolu grâce à un ami, en créant un tableau au début de la fonction :


sfHover = function() {
	navi=new Array("nav","nav2");
	for (j=0; j<navi.length;j++){
		var sfEls = document.getElementById(navi[j]).getElementsByTagName("LI");
		for (var i=0; i<sfEls.length; i++) {
			sfEls[i].onmouseover=function() {
				this.className+=" sfhover";
			}
			sfEls[i].onmouseout=function() {
				this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
			}
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);
[/i][/i]