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

    Onclick di un'mmagine da codice

    Ciao a tutti,
    vorrei inserire da codice un'immagine alla quale voglio associare un evento 'onClick'.
    Ho fatto in questo modo:
    var imgElim = document.createElement("img");
    imgElim.setAttribute("src","../img/trash.jpg");
    imgElim.setAttribute("width","24");
    imgElim.setAttribute("height","24");
    imgElim.style.cursor = "pointer";
    imgElim.onClick = "EliminaVoce('tbDomini','trDominioTemp" + temp_dom + "');";

    L'immagine viene inserita, ma quando clicco sull'immagine non accade nulla.
    Come mai?
    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    - onClick non esiste, esiste onclick
    - un gestore evento si aspetta una funzione, non una stringa come hai scritto

    se ad EliminaVoce non occorresse passare valori come argomenti
    imgElim.onClick = EliminaVoce;

    se invece si attende argomenti puo' rendersi necessaria una funzione anonima
    imgElim.onClick = function(){EliminaVoce('valore1','valore2');}

    - occorre capire cos' e' questa variabile temp_dom, perche' quasi sicuramente sara' finita fuori scope al momento del click

    puoi mantenerla in scope facendola diventare una proprieta' dell' oggetto
    codice:
    imgElim.temp_dom=temp_dom;
    imgElim.onclick=function(){EliminaVoce('tbDomini','trDominioTemp'+this.temp_dom)}
    oppure "wrapparla" con questa sintassi
    codice:
    imgElim.onclick=(function(k){return function(){EliminaVoce('tbDomini','trDominioTemp'+k)}})(temp_dom);
    ciao

  3. #3
    Grazie per l'aiuto.
    Ora funziona, ma c'è un altro piccolo problema.

    Uso questo codice per inserire una riga in una tabella:
    codice:
    function AggiungiUnita() {
    		var trUnita = document.createElement("tr");
    		trUnita.setAttribute("id","trUnita" + temp_dom);
    		trUnita.setAttribute("bgColor","#ffffff");
    					
    		/******/
    		var tdUnita = document.createElement("td");
    		tdUnita.setAttribute("width","170");
    		tdUnita.setAttribute("align","left");
    		tdUnita.setAttribute("vAlign","center");
    		
    		var dominio = document.getElementById("ddlUnita").options[document.getElementById("ddlUnita").selectedIndex].text;
    		var lblUnita = document.createTextNode(dominio);
    		tdUnita.appendChild(lblUnita);	
    					
    		trUnita.appendChild(tdUnita);
    		
    		/******/
    		var tdFunzioni = document.createElement("td");
    		tdFunzioni.setAttribute("width","40");
    		tdFunzioni.setAttribute("align","center");
    		tdFunzioni.setAttribute("vAlign","center");	
    		
    		var hdID = document.createElement("input");		
    		hdID.setAttribute("id","hdUnita" + document.getElementById("ddlUnita").value);	
    		hdID.setAttribute("type","hidden");	
    		hdID.setAttribute("value",document.getElementById("ddlUnita").value);
    		tdFunzioni.appendChild(hdID);
    		
    		var imgElim = document.createElement("img");
    		imgElim.setAttribute("src","../img/trash.jpg");		
    		imgElim.setAttribute("width","24");
    		imgElim.setAttribute("height","24");
    		imgElim.style.cursor = "pointer";
    		imgElim.trDom = "trUnita" + document.getElementById("ddlUnita").value;
    		imgElim.onclick = function(){ EliminaVoce("tbUnitaAbitative","trUnita" + document.getElementById("ddlUnita").value);}
    		tdFunzioni.appendChild(imgElim);		
    
    		trUnita.appendChild(tdFunzioni);
    														
    		document.getElementById("tbUnitaAbitative").appendChild(trUnita);
    Il problema è che se faccio visualizza html, non vedo la riga inserita e se eseguo EliminaVoce non trova la riga inserita.
    Come mai?
    Grazie mille

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da Gemini
    Il problema è che se faccio visualizza html, non vedo la riga inserita
    non e' detto che debba vedersi facendo visualizza html,
    magari l' inspect di firebug su firefox e' piu' attendibile
    e se eseguo EliminaVoce non trova la riga inserita.
    non ho tempo di guardare il tuo codice, se non velocemente,
    se poi non posti quello che c'e' in EliminaVoce e' tutto tempo perso

    poi la console cosa dice? ci sono errori?

  5. #5
    Ancora grazie.
    La console mi dice che non trova l'oggetto, cioè la riga che ho inserito e che tento di eliminare:
    function EliminaVoce(tabella,oggetto)
    {
    var riga = document.getElementById(oggetto)
    var tbl=document.getElementById(tabella)
    tbl.removeChild(riga);
    }

    Ancora grazie

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    non so se dipende da questo (veramente, non ho tempo di ricostruirmi la tua pagina)
    ma non e' il caso di appendere ad una tabella, ma ad un tbody della stessa
    e di specificare questo <tbody> nell' xhtml

    questo perche' quando nel markup non e' presente un tbody alcuni browser lo considerano lo stesso nel DOM ed altri no
    e qui per es. avresti un errore,
    tbl.removeChild(riga);
    perche' la riga non e' figlia della tabella, ma di un tbody che non vedi ma che nel DOM viene considerato

  7. #7
    in realtà viene eseguito l'append su un tbody.
    Grazie mille, controllerò meglio.
    Se hai altri suggeriemtim granzie in anticipo.

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