Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    come passare parametri alla funzione referenziata con attachEvent

    creo una immagine via DOM e aggiungo il gestore eventi con:

    immagine.attachEvent("onclick", cancella_riga);


    vorrei sapere se alla funzione cancella_riga sia possibile passare dei parametri, per esempio l'elemento immagine medesimo, e se sì, come.

    Ciao
    Pietro

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    ciao Pietro
    non so se ho capito bene, un esempio solo x IE potrebbe essere
    codice:
    immagine.attachEvent("onclick",cancella_riga);
    ...
    function cancella_riga(e){
      alert(e.srcElement.src)
      // etc
    }

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Xinod
    ciao Pietro
    non so se ho capito bene, un esempio solo x IE potrebbe essere
    codice:
    immagine.attachEvent("onclick",cancella_riga);
    ...
    function cancella_riga(e){
      alert(e.srcElement.src)
      // etc
    }
    Ti ringrazio . Forse ho risolto. Spiego il problema.
    Ho un pulsante "Aggiungi destinatario" che mi apre un popup di scelta. Quando faccio la scelta dell'elemento che mi interessa, creo una riga di una tabella ove inserisco un hidden con l'ID scelto, un <span con la descrizione scelta e una immagine di una gomma per permettere la cancellazione della riga della tabella.
    Se la riga non la dovessi creare via DOM sarebbe facile:
    basterebbe mettere nell'<img:
    onclick="cancella_riga(this);" poi sarebbe facile risalire alla riga che contiene l'immagine e alla tabella che contiene la riga e quendi, cancellare la riga medesima.
    :master: Ma, se è facile costruire un elemento via DOM, come si associa un evento all'elemento creato? Ho provato con setAttribute, ma non è questo il modo. Allora ho provato con attachEvent (addEventListener per Mozilla) che ha bisogno del puntatore alla funzione. Ma la funzione cancella_riga originaria si aspettava un parametro per funzionare. Da qui la domanda: come si associa un evento ad un elemento creato via DOM? se creo un pulsante, come associare per esempio: onclick="miaFunzione(parametro1, parametro2...)


    Comunque, visto che non potevo risolvere, ho pensato di utilizzare l'event (con IE e Mozilla, come mi avete insegnato qui nel forum) e funziona, ma resta comunque la domanda principale: come si crea un gestore di eventi ad un elemento creato via DOM...

    Ciao e grazie della risposta
    Pietro

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da pietro09
    Se la riga non la dovessi creare via DOM sarebbe facile:
    basterebbe mettere nell'<img:
    onclick="cancella_riga(this);" poi sarebbe facile risalire alla riga che contiene l'immagine e alla tabella che contiene la riga e quendi, cancellare la riga medesima.
    capisco il problema, al momento saprei dirti come passare un parametro qualsiasi, ma non un "this" perche' non e' la stessa cosa
    codice:
    var variabile="valore parametro"
    immagine.attachEvent("onclick",function(){cancella_riga(variabile)});
    non ho provato ma dovrebbe funzionare

    pero', come risaliristi alla riga dall' oggetto immagine?
    probabilmente assegnando un id o un name univoco all' immagine che riconduca alla riga in questione, giusto?

    con setAttribute puoi attribuire name o id
    e in e.srcElement.name avresti il name

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Carissimo Xinod, scherzi vero? Hai risposto perfettamente alla mia domanda ed il tutto funziona sia con Mozilla sia con IE

    Insomma, ti ringrazio moltissimo

    un po' di codice, se mai servisse a qualcuno

    codice:
    	immagine = document.createElement("img");
    	immagine.setAttribute("id", "img_per_conoscenza_" + n);
    	immagine.setAttribute("src", "cancella.gif");
    	immagine.setAttribute("border", "0");
    	
    	if(immagine.attachEvent) 
    		immagine.attachEvent("onclick", function(){cancella_riga_per_conoscenza(immagine)});
    	else if(immagine.addEventListener)
    		immagine.addEventListener("click", function(){cancella_riga_per_conoscenza(immagine)}, false);
    		
    	
    	
    	colonna.appendChild(immagine);
    	riga.appendChild(colonna);
    e recupero la riga nella funzione
    codice:
    function cancella_riga_per_conoscenza(e)
    {
    	alert(e.parentNode.parentNode.id);
    	return;
    Insomma, è tutta un'altra cosa levarsi un dubbio e capire cose nuove. Grazie ancora
    Pietro

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :master: a che serve il secondo parametro, true o false nella funzione addEventListener

    Pietro

  7. #7
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    fase_capturing (true|false) valore booleano che permette di assegnare il listener o sulla fase di capturing dell'evento (true), o su quella di bubbling (false).
    http://pro.html.it/articoli/id_267/i...pag_3/pag.html

    se hai dubbi sul bubbling vedi qui
    http://pro.html.it/articoli/id_267/idcat_11/pro.html

    tornando al tuo codice
    effettivamente passare il riferimento all' oggetto non era poi cosi' complesso

    ma ho un dubbio:
    quella "e" ha un significato ben preciso
    se, come mi sembra, funzionerebbe tutto cambiandola in "pippo" ti consiglio di evitare possibili fraintendimenti

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Xinod
    http://pro.html.it/articoli/id_267/i...pag_3/pag.html

    se hai dubbi sul bubbling vedi qui
    http://pro.html.it/articoli/id_267/idcat_11/pro.html

    tornando al tuo codice
    effettivamente passare il riferimento all' oggetto non era poi cosi' complesso

    ma ho un dubbio:
    quella "e" ha un significato ben preciso
    se, come mi sembra, funzionerebbe tutto cambiandola in "pippo" ti consiglio di evitare possibili fraintendimenti
    Ti ringrazio della risposta
    Per quanto riguarda il parametro chiamato e, hai ragione. e stava in origine per event, passato per Mozilla...

    Ciao
    Pietro

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.