Lieber Gerhard,
auf der Suche nach einem Event, dass die Änderung der Anzahl der Options einer Select-Box erkennt.
das gibt es so nicht. Du müsstest Dir soetwas basteln. Du könntest z.B. Deinem <select>-Element eine Methode "onappend" geben.
function onappend() {
alert("'onappend()' des Elements wurde aufgerufen!");
return;
}
function imbueElementsWithOnAppend(tagName) {
var allMyElements = document.getElementsByTagName(tagName), i;
for (i = 0; i < allMyElements.length; i++) {
// setzt "this" innerhalb der Funktion auf das aktuelle HTML-Element:
onappend.apply = function (allMyElements[i]);
}
}
Die Funktion, die Deine <select>-Felder um Optionen erweitert, müsste dann eben jedesmal, wenn sie eine Erweiterung vorgenommen hat, diese onappend-Funktion aufrufen:
function meineAJAXgetriebeneUpdateFunktion () {
var mySelect = ...; // irgendwo ist eine Referenz auf das <select>-Element vorhanden
... // neue <option>-Elemente in ein <select>-Element einpflanzen
if (typeof mySelect.onappend == "function") {
mySelect.onappend();
}
}
Ich habe sowas noch nie gemacht, aber das sollte in etwa so klappen. Man hat ja das Problem, dass bei Eventhandler-Funktion das Schlüsselwort "this" immer auf das aktuelle HTML-Element verweist, bei dem das Event festgestellt wurde - und das habe ich mit apply versucht, zu simulieren.
Das muss man aber so nicht machen. Man kann einfach myElement.onappend=function(){...}
notieren, sodass dann innerhalb der Funktion this eben auf window verweist... ganz wie Du das brauchst.
Liebe Grüße,
Felix Riesterer.
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)