perché la definizione degli eventi DOM0 (cioè quella in cui metti le istruzioni da eseguire nel codice HTML) non viene applicata se gli elementi vengono inseriti con innerHTML.
Devi usare la notazione DOM1 o DOM2 che applica gli eventi direttamente sull'elemento, ma stai attento che le variabili che passi alla funzione diventano globali.
Cioè se fai:
codice:
for(i = 0; i < 10; i++){
var lnk = document.createElement('a');
div.appendChild(lnk);
lnk.href = "#";
lnk.onclick = function(){
alert(i);
}
lnk.appendChild(document.createTextNode('Link '+i));
}
Ogni link che aggiungi farà l'alert di 10 perchè la funzione così applica il valore della variabile al momento in cui la lanci (quindi sarà 10).
Devi fare:
codice:
for(i = 0; i < 10; i++){
var lnk = document.createElement('a');
test_container.appendChild(lnk);
lnk.href = "#";
eval("lnk.onclick = function(){alert("+i+");}");
lnk.appendChild(document.createTextNode('Link '+i));
}
in questo modo viene applicato ESATTAMENTE il valore che tu passi. Nel tuo caso farei:
codice:
var img = document.createElement('img');
div.innerHTML = "";
div.appendChild(img);
img.src='"http://... '+src+'.gif"';
img.alt=""
eval('img.onclick = function(){ funzione("'+arg1+'","'+arg2+'");}');