|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2003
Messaggi: 5199
|
[JS] Script "chiusura" menu
salve a tutti, sto impazzendo con questo semplicissimo script js:
Codice:
window.onload=expand;
function expand(id) {
var elem = document.getElementById(id);
for (var i = 1; i<=20; i++) {
if (document.getElementById('submenu'+i)) {document.getElementById ('submenu'+i).style.display='none';}
}
if (elem) {d.style.display='block';}
}
preciso che ho cercato di rendere lo script il più leggero e snello possibile, è per questo che è così striminzito... il sito è centrato su tanto php quindi non voglio esagerare col js |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Ma dove li fai i controlli che dici?
Non puoi mettere il codice per intero integrato in una paginetta da vedere un attimo dove sta l'inghippo? Ultima modifica di MEMon : 18-02-2007 alle 13:44. |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Tu hai assegnato una funzione a window.onload. L'evento onload viene generato quando la pagina è stata caricata e fin qui ci siamo. Ma non ti viene certamente passato un 'id' di un elemento!!!! Diciamo che sui browser IE non viene passato alcun valore (id sarebbe undefined), sui browser Mozilla e simili viene passato un oggetto di tipo Event. Per dirla in breve: quando una tua funzione è usata come "event handler", non sei tu che puoi specificare quali parametri ricevere!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Mar 2003
Messaggi: 5199
|
scusa, forse non ho capito, ma l'id viene passato solo quando la funzione viene chiamata dal menu (tramite un onclick), quello che fa al caricamento della pagina è solo chiudere tutti gli elementi con id "submenu" aperti!
questo è un piccolo esempio del codice che usa quello script Codice:
<dt onclick="javascript:show('submenu1');">Menu1</dt>
<dd id="submenu1">
<ul>
<li><a href="pag.html">submenu1</a></li>
<li><a href="#">submenu2</a></li>
<li><a href="#">submenu3</a></li>
</ul>
</dd></dt>
la cosa che ho provato per prima è stata chiamare prima un'altra funzione, che in pratica controllava se gli elementi con id "submenu" successivi all'elemento padre avevano proprietà display = block e nel qual caso la settava a none, mentre in caso contrario chiamava la funzione show ... ma il controllo condizionale su style.display non funziona |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Tutto qui quello che volevo dire!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Mar 2003
Messaggi: 5199
|
ah ok. sì cmq quello che volevo fargli fare all'onload era semplicemente chiudere tutti i submenu aperti, infatti arrivandogli un id nullo la parte dell'espansione viene semplicemente ignorata
cmq ritornando alla domanda iniziale, qualche idea su come posso richiudere i submenu una volta aperti? |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Mar 2003
Messaggi: 5199
|
up
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Mar 2003
Messaggi: 5199
|
up
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Mar 2003
Messaggi: 5199
|
up
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:17.




















