2016-03-23 4 views
1

Ich habe eine Funktion, die alle untergeordneten Elemente von einem <select> auf dem onfocus Ereignis entfernen soll. (Diesem soll bald gefolgt werden, indem die <select> mit Werten von einem AJAX-Aufruf gefüllt wird). Aus irgendeinem Grund entfernt es nur eines der Elemente beim ersten Aufruf und fährt dann fort, alle nachfolgenden Aufrufe auszuführen. Hat jemand eine Ahnung, warum dies passieren könnte?Warum werden dadurch nicht alle Elemente aus dem Element <select> entfernt?

JS-Code:

function handle(e) { 
    for(var i = 0; i < e.children.length - 1; i++) { 
    e.removeChild(e.children[i]); 
    } 
} 
+0

Wenn Sie child [0] entfernen, wird Kind [1] sofort Kind [0]. Verwenden Sie jQuery empty() -Funktion. –

+0

OH !!!!!!, also sollte ich sie invers entfernen order. (facepalms self) –

+0

Um Optionen zu entfernen, wählen Sie 'select.options.length = 0' oder' while (select.firstChild) select.removeChild (select.firstChi ld) 'oder ... Oh, und es wird für jedes Element mit mehr als einem Kind dasselbe sein. – RobG

Antwort

1

i handle() raten bin, ist Ihr onfocus Event-Handler. In diesem Fall e ist Ihr Event-Objekt und hat keine children Eigenschaft

warum nicht nur verwenden select.innerHTML = ""

+0

Wow (facepalms selbst wieder) (facepalms selbst wieder) (Sokka-Face freigeschaltet) –

0

So ist die Antwort einfach sie in umgekehrter Reihenfolge zu entfernen, da die Auswirkungen eines Indexierungssystem ganz ähnlich wie die VB.NET Liste Klasse zu vermeiden. (Das heißt, dass es reorganisiert sich jedes Mal, wenn eine Änderung vorgenommen wird.

Verwandte Themen