Ciao posto questa funzione che ho dovuto creare per un problema simile.
Io ho risolto così:

function modifica(i){
oTd[i*2+1].innerHTML=' | Salva';
var salva=document.getElementById('salva');
var browser=navigator.appName;
if(browser=="Microsoft Internet Explorer"){ //Explorer
salva.attachEvent('onclick',function(){attiva(i)}) ;
document.getElementById('ind_'+i).readOnly=false;
}else if(browser=="Netscape"){ //Firefox
salva.setAttribute("onclick","attiva"+"("+i+")");
document.getElementById('ind_'+i).readOnly=false;
}
}

In pratica ogni volta che faccio partire la funzione modifica(i) faccio comparire il link "Salva" che viene inserito tramite innerHTML, il quale contiene inizialmente un onclick vuoto. Poi verifico quale browser sta lanciando la funzione e differenzio. Se è explorer è necessario utilizzare attachEvent che però non è supportato da Netscape e Firefox e non è neppure riconosciuto come standard dal W3C, ma è l'unica generica cosa che ho trovato e che funziona.

attachEvent('onclick',doSomething)