Nabend Hannes,
Ist es möglich einem DOM-Objekt einen Event-Handler (onChange) hinzuzufügen, der eine Funktion auf dem hinzhufügenden Objekt aufruft?
Konkret:
function List(node) {
this.node = node;
this.node.onchange = this.changed;
}List.prototype.changed = function() {
alert(this.node);
}
als kleines Beispiel, wie es im Mozilla funktioniert:
function removeAlert()
{
document.getElementsByTagName('body')[0].removeChild(document.getElementsByTagName('body')[0].lastChild);
}
text =document.createTextNode('klick mich');
b =document.createElement('b');
b.appendChild(text);
b.onclick =function(){removeAlert();};
b.onmouseover=function(){this.style.color='#f00';};
b.onmouseout =function(){this.style.color='#000';};
document.getElementsByTagName('body')[0].appendChild(b);
Wenn ich das Event durch eine Änderung im Browser auslöse wird die changed richtig aufgerufen, this scheint aber nicht auf das Objekt zu zeigen, welches den Event-Hanlder eingetragen hat. this.node ist undefiniert. this scheint vielmehr auf das Objekt zu zeigen, welches das Event ausgelöst hat.
Das Beispiel arbeitet auch mit this, aber in einem anderen Kontext. This ist in diesem Falle, wie Du auch schon bemerkt hast, das eventauslösende Elemet.
Wie benachrichtige ich nun aber das Objekt, welches den EH eingetragen hat von seiner Auslösung?
Bitte erkläre diesen Satz etwas eingehender und nach möglichkeit ohne Abküzungen! Mir ist leider nicht klar, was Du wissen willst.
Gruß aus Berlin!
eddi