Parametri delle Callback di addEventListener()

di il
6 risposte

Parametri delle Callback di addEventListener()

Sto facendo un programma e mi è sorta una complicazione

Dentro ad una funzione vorrei passare il parametro di questa all'interno di un altra. Faccio un esempio

h1.addEventListener ("click", stampa (italiano));
h2.addEventListener ("click", stampa (matematica));

function stampa (oggetto) {
...
paragrafo.addEventListener ("click", apri (oggetto));
}

function apri (oggetto) {...}

Nel passare il parametro di stampa(f) a apri(f) mi da l'errore di null, c'è un metodo per ovviare a ciò, pur mantenendo lo stesso funzionamento

6 Risposte

  • Re: Parametri delle Callback di addEventListener()

    Gabu ha scritto:


    Dentro ad una funzione vorrei passare il parametro di questa all'interno di un altra. [...]
    Non hai bisogno di aggiungere oggetto come parametro: se definisci il callback all'interno della funzione, puoi accedere alle variabili che sono visibili nel contesto, quindi anche il parametro oggetto.
    
    function stampa (oggetto) {
      paragrafo.addEventListener ("click", function() {
        apri(oggetto);
      });
    }
    
    Ciao!
  • Re: Parametri delle Callback di addEventListener()

    Ah semplice, grazie mille
  • Re: Parametri delle Callback di addEventListener()

    Alka ha scritto:


    Gabu ha scritto:


    Dentro ad una funzione vorrei passare il parametro di questa all'interno di un altra. [...]
    Non hai bisogno di aggiungere oggetto come parametro: se definisci il callback all'interno della funzione, puoi accedere alle variabili che sono visibili nel contesto, quindi anche il parametro oggetto.
    
    function stampa (oggetto) {
      paragrafo.addEventListener ("click", function() {
        apri(oggetto);
      });
    }
    
    Ciao!
    Una cosa, se io volessi poi usare removeEventListener, non riesco perché è una funzione anonima, come faccio?
  • Re: Parametri delle Callback di addEventListener()

    Gabu ha scritto:


    Una cosa, se io volessi poi usare removeEventListener, non riesco perché è una funzione anonima, come faccio?
    Salva il valore da qualche parte: la funzione anonima può essere memorizzata come qualsiasi altra cosa all'interno di una variabile.
    
    var callback;
     
    function stampa (oggetto) {
      callback = function() {
        apri(oggetto);
       };
      paragrafo.addEventListener("click", callback);
    }
    
    // ...
    
    paragrafo.removeEventListener("click", callback);
    
    Ciao!
  • Re: Parametri delle Callback di addEventListener()

    P.S.
    Prendi gli esempi che ti pongo come semplici PoC (Proof of Concept), ossia come stralci di codice che hanno la finalità di mostrarti gli strumenti che puoi utilizzare per implementare una certa soluzione; ad esempio, il codice dell'ultimo messaggio risolve direttamente la tua esigenza, ma non può essere considerato in sé del "buon codice".

    Intendo dire che, una volta appreso il concetto e capito come funziona JavaScript o la tecnica specifica in questione, il codice lo devi rivedere e personalizzare per fare sì che possa funzionare per il tuo caso ma implementando la soluzione in modo pulito e ordinato, ad esempio senza variabili globali, rivedendo la memorizzazione dei valori dei callback, ecc. in modo che rimanga comunque "gestibile".

    Non so cosa stai cercando di fare nel tuo progetto in termini di ampia visione, quindi magari (anzi sicuramente) c'è un modo migliore e/o alternativo di fare le cose, sfruttando le caratteristiche del linguaggio mostrate negli esempi.

    In sintesi, non limitarti a fare solamente copia/incolla.

    Ciao!
  • Re: Parametri delle Callback di addEventListener()

    Okay grazie mille
Devi accedere o registrarti per scrivere nel forum
6 risposte