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

    [addEventListener] Programmazione guidata dagli eventi

    Ho bisogno di realizzare un form in cui gli eventi siano gestiti dal javascript, come sempre d'altronde, e sto cercando di costruire una funzione in grado di gestire gli eventi tramite addEventListener e cioè?
    codice:
                    // Gestione degli eventi del mouse (e non solo))
    		function gestoreEvento(id, evento, nomeFunzione) {
    			if (element(id).addEventListener) {	// Mozilloidi
    				element(id).addEventListener(evento, nomeFunzione, false);
    			} else if (element(id).attachEvent) {	// M$
    				element(id).attachEvent('on' + evento, nomeFunzione);
    			}
    		}	//	gestoreEvento()
    Ora il problema è che nomeFunzione non passa affatto il nome della funzione che deve fare qualcosa allo scatenarsi dell'evento, per esemio click.

    codice:
    window.onload function () {
      gestoreEvento('anno', 'click', 'insAnno');
    }
    insAnno è una semplice funzione che quando faccio click nella textbox a cui si applica l'evento, mi scrive l'anno corrente, il problema è che quando passo il nome della funzione a gestoreEvento() questo va in crash.
    So già che non si deve passarla come stringa, ma le ho provate tutte, compreso l'uso di una funzione fantasma, sapete come fare?
    Grazie.

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Come sempre la soluzione è più semplice di quanto di creda!
    Non mi era venuto in mente di passare a funzione all'interno di una variabile.
    La funzione funziona
    A beneficio di tutti però ora la metto qui!
    codice:
    <script type="text/javascript">
    	//<![CDATA[
    
    // Inserisce la data nel campo "anno"
    		var insAnno = function() {
    		var data = new Date();
    			this.value = data.getFullYear();
    		}	//	anno()
    
    // Gestione degli eventi del mouse (e non solo))
    		function gestoreEvento(id, evento, nomeFunzione) {
    			if (element(id).addEventListener) {	// Mozilloidi
    				element(id).addEventListener(evento, nomeFunzione, false);
    			} else if (element(id).attachEvent) {	// M$
    				element(id).attachEvent('on' + evento, nomeFunzione);
    			}
    		}	//	gestoreEvento()
    		
    		window.onload = function() {
    			element('data-odierna').innerHTML = creaData();
    			
    			if(document.getElementsByTagName && document.createElement) {
    				Focus();	// Evidenzia il fuoco di un elemento
    			}
    			//element("anno").onfocus = function() {var data = new Date(); this.value=data.getFullYear();}
    			gestoreEvento('anno', 'click', insAnno);
    			//element("stato").onchange = alert(this.value);
    		}	//	onload()
    	//]]>
    	</script>
    e quindi il codice

    codice:
    <form fa qualcosa >
    <input type="text" id="anno" name="anno" value="" />
    </form>
    Ora così, facendo click sulla casella di testo vi apparirà l'anno n corso (2008).
    per chi non conosce la "gracefull degradation e progressive enhancement" nel form gli elementi non hanno più i gestori di evento (onclick, onvattelapesca) ma questi sono scatenati dalla funzione di cui sopra, il sistema funziona lo stesso con quasi tutti i browser, ma per quelli molto vecchi o con i browser dei telefonini dove il javascript è spesso implementato in modo più embrionale, il form funziona comunque, solo che l'anno ce lo dovrete scrivere a mano e non basterà più solo farci click sopra

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 © 2025 vBulletin Solutions, Inc. All rights reserved.