Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    cambiare evento onclick dinamicamente

    Ciao a tutti, ho cercato un pò ovunque, ho trovato varie soluzioni ma nessuna funzionante. In pratica ho un immagine dentro un tag href, al click su questa immagine, mi parte una funzione javascript con varie operazioni da eseguire, tra cui quella di cambiare l'evento onclick di altre immagini. Faccio un esempio:

    javascript:
    codice:
    function cancella_allegato(id, num)
    {
    	for (var i=0; i<10; i++) 
    	{					
    		
    		var numero=num-1;		
    		document.getElementById("a_"+i).onclick=function(cancella_allegato(id, numero));			
    	}
    }
    Html:
    codice:
    ...
    ...
    ...
    <span id="foto0">
    <a href="javascript:;" onclick="cancella_allegato('foto', '0');" class="link" id="a_0">
    [img]img/x.png[/img]
    </a>
    </span>
    ...
    ...
    ...
    <span id="foto1">
    <a href="javascript:;" onclick="cancella_allegato('foto', '1');" class="link" id="a_1">
    [img]img/x.png[/img]
    </a>
    </span>
    ...
    ...
    ...
    <span id="foto2">
    <a href="javascript:;" onclick="cancella_allegato('foto', '2');" class="link" id="a_2">
    [img]img/x.png[/img]
    </a>
    </span>
    ...
    ...
    ...
    in pratica questo codice mi va a modificare l'evento onclick, ma non esegue la funzione. Come mai? ci sto uscendo matto!

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Prova cosi:
    document.getElementById("a_"+i).onclick=function{c ancella_allegato(id, numero)};
    oppure:
    document.getElementById("a_"+i).onclick=cancella_a llegato(id, numero);
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    intanto grazie per la risposta.. comunque avevo già provato quelle soluzioni, ho messo un alert dopo che assegno la funzione leggendo il valore di onclick, mi restituisce cancella_allegato(id,numero) o function {cancella_allegato(id,numero)}
    in pratica non mi riconosce id e numero come variabili ma come testo..

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Prova cosi:
    document.getElementById("a_"+i).onclick=function{c ancella_allegato('"+id+"', '"+numero+"')};
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    se vuoi mantenere variabili nello scope della funzione che viene richiamata in altro momento,
    o imbrogli e usi gli expando
    codice:
    var el=document.getElementById("a_"+i);
    el.numero=numero;
    el.idx=id;
    el.onclick=function(){cancella_allegato(this.idx,this.numero);}
    o, molto molto meglio, usi una closure
    codice:
    document.getElementById("a_"+i).onclick=(function(id, num){return function(){cancella_allegato(id, num)}})(id,numero);
    ciao

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    chiaramente la soluzione piu' semplice nel caso specifico che hai presentato e' usare variabili globali
    ma ho evitato di citartela perche', in genere, quando ci sono di mezzo cicli o temporizzazioni quello che si vuole e' mantenere tutto in scope

  7. #7
    grazie per la tua risposta, ieri ero riuscito a trovare una soluzione ma non va in IE
    in pratica usavo setAttribute("onclick", cancella_allegato('"+id+"', '"+numero+'"));
    appena sono a casa provo anche la solzione che mi hai postato, vi farò sapere come andrà

    ciauz

  8. #8
    grande funziona alla perfezione

    thanks!!

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.