Felix Riesterer: Event für Änderung einer Select-Liste

Beitrag lesen

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:)