ChrisB: JS Variable bei onclick

Beitrag lesen

Hi,

Bin mir nicht sicher, aber habe glaube ich mal gehört, dass Events bei innerHTML z.B. nicht funktionieren.

Jein, nicht per se.

Aber per Script hinzugefügte Eventhandler gehen verloren, wenn du das innerHTML eines Vorfahrenelementes erweiterst oder auch mit gleichem Inhalt neu setzt - weil dabei die Elemente jeweils komplett neu erzeugt werden.

<div id="testdiv"><a id="testlink" ...>blubb</a></div>

document.getElementById("testlink").onclick = doSomething;

  • damit hätten wir dem A-Element einen Eventhandler verpasst, der bei Klick auf das Element die Funktion doSomething aufruft.

Wenn du jetzt anschliessend irgendwie schreibend auf innerHTML von #testdiv zugreifst - bspw.
document.getElementById("testdiv").innerHTML += "<strong>Oops!</strong>";
dann geht der Eventhandler verloren, weil ein komplett neues A-Element erzeugt wird. Das sichtbare Ergebnis mag das gleiche bleiben - aber es ist nicht mehr das A-Element von vorher.

MfG ChrisB

--
Light travels faster than sound - that's why most people appear bright until you hear them speak.