Salve a tutti
Ho la necessità di far evidenziare ogni elemento del menu al caricamento della pagina. In pratica ho pensato in questo modo: non devo far altro che ricavare il nome della pagina corrente e andare a modificare nel DOM i tag il cui attributo href sia uguale al nome della pagina. Dopodich� modificare solo la classe di questo oggetto. Questo è il codice:
codice HTML:<!DOCTYPE html> <head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="css/stylesheet.css" /> <script type="text/javascript" src="js/prova.js"></script> </head> <body onload=start()> <nav class=menu> <ul> <li class="default"><a href="index.php">Home</a></li> <li class="default"><a href="chisiamo.php">La struttura</a></li> <li class="default"><a href="reparti.php">I nostri reparti</a></li> <li class="default"><a href="prenotazioni.php">Prenotazioni</a></li> <li class="default"><a href="contatti.php">Info e Contatti</a></li> </ul> </nav>
Dal codice seguente si può ben capire che al momento del caricamento della pagina deve cambiare la classe dell'elemento li, avente per figlio il tag <a> il cui attributo href sia uguale al nome della pagina corrente. Ecco il codice JS:
codice:function start () { autoselect(); } function autoselect(){ url = location.href; l = url.substr(url.lastIndexOf("/")+1).split(/[?#]/)[0]; lista_url = document.getElementsByTagName("a"); var ref = null; for (i=0; i < lista_url.length; i++) { if (lista_url.item(i).getAttribute("href") == l) { ref = lista_url.item(i); //ref contiene il riferimento del tag a avente valore href pari al filename della pagina corrente } } li = ref.parentNode; li.className = "selected"; alert(li); }
Il seguente codice mi modifica la classe dell'elemento li -provato con un alert(li.className) da console js - ma quando apro la pagina il menu non viene selezionato. Da console javascript dando i comandi della funzione invece funziona perfettamente.
Perché?


Rispondi quotando