Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606

    classe che apre e chiude un box nella pagina

    Quando lo dico io!
    In realtà fa come gli pare
    Mi spiego: ho creata una classe che tra gli altri metodi ne contiene uno che fa apparire/scomparire un elemento nella pagina.
    Nulla di particolare, ma la cosa che mi fa incavolare è che appena "clicco" sull'ancora che lo richiama, questo apre per un istante il box e poi esso si richiude da se!
    Hem non doveva fare così

    Codicillo:
    codice:
    ...... omissis
            /*
    			Metodo: openClose
    			definisce un metodo per aprire e chiudere un blocco di codice html
    			Argomenti:
    				- [string] id: l'id dell'elemento da far apparire/scomparire
    			Esempio d'uso: element.openClose('pippo');
    				-- la proprietà css da usarsi deve essere display --
    	*/
    	openClose: function(id) {
    		if (element.getStyle(id, 'display') == 'none') {
    			element.setStyle(id, 'display', 'block');
    		} else {
    			element.setStyle(id, 'display', 'none');
    		}
    	}	//	openClose()
    ....... omissis
    Spiego! La classe si chiama element perché gestisce gli elementi del DOM, tra i metodi ha anche uno che si chiama getStyle() che ritorna il valore di settaggio di una prorpietà css e uno chiamato setStyle() che setta i valori della proprietà.

    Ecco il pezzo di codice xhtml che richiama la classe:
    codice:
            apri/chiudi
    	<div id="testo" style="display:none">
    		
    
    efpjhgphjpehjtpgjhbgjbgfjgjngjbvdm tbjdpkjfv fm f pg</p>
    	</div>
    semplice dopo tutto.

    Quando faccio "click" su apri/chiudi in effetti mi apre il box, ma contestualmente me lo richiude persino, mentre l'idea è che la chiusura fosse comandata da me con un secondo click.
    Qualcuno mi sa dire perché questo succede?

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Sicuro setStyle e getStyle mai visto come metodo http://javascript.html.it/guide/lezi...m-nei-browser/
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Ma sono metodi che ho creato io Andrea, servono solo a semplificarmi la vita... almeno dovrebbero
    Comunque c'è qualche cosa che non va proprio e non comprendo.
    Ho semplificato la cosa, ovvero l'ho estrapolata dal contesto della classe che sto sviluppando e l'ho ricreata in modo procedurale, nada de nada, stesso problema.
    La cosa peggiore è che io questa funzionalità la uso da una vita, e per capire cosa c'è che non va l'ho ricopiata da un'altro progetto dove la uso e lì funziona
    Qui no non ha proprio senso, ho fatto copia e incolla dall'altro sito
    Sto cercando un qualsiasi errore di sintassi ma non ne trovo.

  4. #4
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Questo è il listato di test
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
    	<title>Prova libreria</title>
    	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    	<script type="text/javascript">
    		// Definisce un elemento ID all'interno dell'intero documento
    		function getEl(ID) {
    		var doc = null;
    			if (document.getElementById) {	// 	Mozilla + IE6/7
    				doc = document.getElementById(ID);
    			} else if (document.all) {	//	IE4
    				doc = document.all[ID];
    			} else if (document.layers) {	// 	Netscape 4
    				doc = document.layers[ID];
    			}
    		return doc;
    		} 	// 	element()
    
    		// Apre e chiude una parte del documento e deseleziona la casella di controllo
    		function apre(id){;
    			if(getEl(id).style.display == 'none') {
    				getEl(id).style.display = 'block';
    			} else {
    				getEl(id).style.display = 'none';
    			}
    		}
    
    	</script>
    </head>
    <body>
    	apri/chiudi
    	<div id="testo" style="display:none">
    		
    
    efpjhgphjpehjtpgjhbgjbgfjgjngjbvdm tbjdpkjfv fm f pg</p>
    	</div>
    </body>
    </html>
    Per il test ho implementato un semplice codice procedurale che uso da anni con successo.
    Praticamente fa lo stesso scherzo.

  5. #5
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Ma porc.....
    Trovato l'errore, dicevo che era un problema dovuto più che altro alla sintassi, ma qui è davvero esagerata la cosa
    L'errore, se così si può definire era nel codice html, non nel javascript e poi non è nemmeno del tutto un errore a rigore.
    Mentre scrivevo il codice di cui sopra ho notato che l'attributo href dell'ancora l'avevo lasciato in bianco; mi sono detto: "mettiamoci un cancelletto come dovrebbe essere e vediamo che succede!".
    Succede che ora funziona tutto... ma porc
    Ok, si risolve così:
    Ora funge

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.