| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  18-02-2007, 13:17 | #1 | 
| Senior Member Iscritto dal: Mar 2003 
					Messaggi: 5200
				 | 
				
				[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   | 
|   |   | 
|  18-02-2007, 13:40 | #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. | 
|   |   | 
|  18-02-2007, 15:43 | #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%) | |
|   |   | 
|  18-02-2007, 17:59 | #4 | 
| Senior Member Iscritto dal: Mar 2003 
					Messaggi: 5200
				 | 
		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 | 
|   |   | 
|  19-02-2007, 09:19 | #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%) | |
|   |   | 
|  22-02-2007, 21:06 | #6 | 
| Senior Member Iscritto dal: Mar 2003 
					Messaggi: 5200
				 | 
		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? | 
|   |   | 
|  24-02-2007, 16:41 | #7 | 
| Senior Member Iscritto dal: Mar 2003 
					Messaggi: 5200
				 | 
		up
		 | 
|   |   | 
|  02-03-2007, 16:18 | #8 | 
| Senior Member Iscritto dal: Mar 2003 
					Messaggi: 5200
				 | 
		up
		 | 
|   |   | 
|  08-03-2007, 15:13 | #9 | 
| Senior Member Iscritto dal: Mar 2003 
					Messaggi: 5200
				 | 
		up
		 | 
|   |   | 
|   | 
| Strumenti | |
| 
 | 
 | 
Tutti gli orari sono GMT +1. Ora sono le: 22:31.









 
		 
		 
		 
		








 
  
 



 
                        
                        










