Visualizzazione dei risultati da 1 a 4 su 4

Discussione: addEventListener

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    6

    addEventListener

    ho un problema con un addEventListener, non so se questa è la sezione giusta per chiedere, spero di si ^^'

    a spiegare il problema a voce di metterei righe e righe e probabilmente risulterebbe poco chiaro, per cui lascerò che il codice parli per me :P

    in pratica, sto creando un userscript che, in una data pagina, cerca un determinato div (che acquisisce nella variabile 'node') e fa questo:
    codice:
    node.addEventListener('click', execute, false);
    function execute() 
    {
    	input = document.createElement('div');
    	//...varia roba dentro questo 'input', tra cui
    	filler1 = document.createElement('div');
    	//vi risparmio le specifiche css di 'filler1', basti sapere che tra le altre cose
    	filler1.addEventListener('click', rotate, false);
    	function rotate() { 
    		//vi risparmio anche questa funzione, diciamo a titolo di esempio che si tratti di un semplice
    		alert('ciao'); 
    	}
    	input.appendChild(filler1);
    }
    il problema è che questo secondo addEventListener blocca tutto il codice. Questo succede per qualunque funzione io tenti di richiamare, con tutte le possibili combinazioni di true e false, a meno che nn si tratti di execute: filler1.addEventListener('click', execute, false); infatti funziona...

    qualcuno può spiegarmi l'arcano? ha qualcosa a che vedere con il fatto che rotate() sia una funzione 'locale' in quanto dichiarata all'interno di execute()? ...però anche l'EventListener è 'locale'... senza contare che avrei grossi problemi a utilizzare una funzione globale in quanto devo fargli eseguire delle operazioni su variabili locali, e con l'EventListener nn riesco a passare parametri alle funzioni...

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    scusa ma, semplificando al massimo, questo non puo' che dare errore
    codice:
    function a(){
    	// blabla
    	function b(){
    		alert('b')
    	}
    }
    b()
    le funzioni che andrai a richiamare non possono venir definite all' interno di execute
    (non per niente execute stessa e' l' unica che funzionerebbe)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    6
    no aspetta il mio caso è piuttosto un
    codice:
    function a(){
    	// blabla
    	function b(){
    		alert('b')
    	}
    	b()
    }


    ...però mi hai dato un idea, e se è quello il problema mi sparo...

    edit: sigh... il mio problema era che cercavo di fare questo
    codice:
    function a(){
    	// blabla
    	b()
    	function b(){
    		alert('b')
    	}
    }
    (ossia richiamare una funzione che non avevo ancora definito :P) mentre avrei semplicemente dovuto fare
    codice:
    function a(){
    	// blabla
    	function b(){
    		alert('b')
    	}
    	b()
    }
    u.u a volte mi sento proprio stupido :P

  4. #4
    Codice PHP:
    function a(){
        
    // blabla
        
    b()
        function 
    b(){
            
    alert('b')
        }
    }
    a(); 
    in js le funzioni hanno lexical scope
    in soldoni lo scope lo hanno quando sono definite
    non quando sono eseguite quindi quello snippet funzia.


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

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.