ho scritto questo html:
e questo script per mostrare i sottomenu all'onclick sui[*] del menu padre:
codice:
<script type="text/javascript">
// nasconde gli <ul> figli del menu principale
window.onload = function(){
if(document.getElementsByTagName && document.getElementById){
var menu = document.getElementById("menu");
var a_sottomenu = menu.getElementsByTagName("ul");
// alert(a_sottomenu.length);
for(var i=0; i<a_sottomenu.length; i++){
a_sottomenu[i].style.display = "none";
}
// alert(menu.childNodes.length);
// cicla tra i[*] figli diretti del menu principale per assegnare il comportamento dell'evento onclick
for (var i=0; i<menu.childNodes.length; i++)
// se l'elemento figlio preso in considerazione è un[*], allora ...
if (menu.childNodes[i].nodeName.toLowerCase() == "li") {
li = menu.childNodes[i];
// ... attribuisce a tale[*] il seguente metodo attivato dall'onclick
li.onclick = function(){
var ul_figlio = this.getElementsByTagName("ul")[0];
if(ul_figlio.style.display == "block"){
ul_figlio.style.display = "none";
}
else{
ul_figlio.style.display = "block";
}
}
}
}
}
</script>
tutto funziona bene eccetto un'anomalia che ho riscontrato per caso: anche i link dei menu figli sono in grado di far collassare i sottomenu (a cui appartengono) all'onclick. pensavo che la funzione abilitante a questa capacità fosse assegnata solo ai[*] del menu padre!
come risolvo la cosa?