Ajax Lauch: Onclick per JS ändern klappt nicht

Hi,

ich will einen Funktions aufruf ändern indem ich das onclick per JS manipuliere.

ich will keine neue Funktion reinschreiben nur in der vorhandenen Parameter ändern.

Hier mein Ansatz:

document.getElementById(elements[i].id).onclick = 'open_tab('+elements[i].id+','+neu+')';

Das hab ich bei Google gefunden

document.getElementById(elements[i].id).onclick = new Function("alert('hallo')");

  1. document.getElementById(elements[i].id).onclick = 'open_tab('+elements[i].id+','+neu+')';

    Das Übergeben der id ist vermutlich unnötig, weil du in der Handlerfunktion auf das verarbeitende Element über »this« zugreifen kannst - und damit auf über this.id auf dessen ID.

    Wenn sich neu innerhalb der Schleife nicht ändern, kannst du schreiben:

    var neu = "irgendwas";  
    var handler = function () {  
       open_tab(this, neu);  
    };  
    for (... elements ...) {  
       document.getElementById(elements[i].id).onclick = handler;  
    }
    

    Mathias

  2. document.getElementById(elements[i].id).onclick = new Function("alert('hallo')");

    Schätze, du hast das Element schon? Dann kannst du auch gleich elements[i] manipulieren. new Function ist fast immer unnötig.

    Ergo:

      
    elements[i].onclick = function(){alert('hallo')};  
    
    

    Wenn du onclick-events in einer Schleife setzt, ist zudem Vorsicht geboten:
    http://yuiblog.com/blog/2006/09/26/for-in-intrigue/