JavaScript Dropdown leeren klappt nicht

mosquito87

Lieutenant
Registriert
Aug. 2006
Beiträge
980
Hallo zusammen,

mit folgendem Code in einer Funktion will ich ein Dropdown leeren:

Code:
...
//Dropdown leeren
                for (var i = 0; i < document.Formular.dropdownStadt.length; i++) {
                    alert(i);
                    document.Formular.dropdownStadt.options[i] = null;
                }
...

Das merkwürdige ist:
Die for-Schleife wird nur 2x durchlaufen (Ausgabe ist zuerst "0", dann "1"), obwohl document.Formular.dropdownStadt.length 3 zurück gibt.
Das letzte Element in dem Dropdown wird also nicht gelöscht.

Woran liegt das? Was mache ich falsch?
 
Code:
if ( cell.hasChildNodes() )
{
    while ( cell.childNodes.length >= 1 )
    {
        cell.removeChild( cell.firstChild );       
    } 
}
Ganz einfach und flexibel. :)
 
Du hast einen kleinen Logikfehler in der Schleife: Du löschst immer das Element mit dem Index i (wobei i hochgezählt wird). Aber bei jedem Durchlauf wird die Liste ein Element kürzer. Ist i bei 2 will er das dritte Element löschen, obwohl da keins mehr ist.

In der Schleife muss das stehen:
Code:
document.Formular.dropdownStadt.options[0] = null;

Dann wird bei jedem Durchlauf der erste Eintrag gelöscht und die restlichen "rutschen nach"
 
Morgen,

danke für die Antworten.
War wirklich ein Logikfehler. Habe nicht bedacht, dass der Index dann verschoben wird. Das ist in anderen Sprachen teilweise etwas anders.

Entsprechend musste ich die for- Schleife noch in eine while-Schleife umwandeln und dann passt es:

Code:
//Dropdown leeren
                while(document.Formular.dropdownStadt.length > 0) {
                    //Erste Option in Dropdown (Stelle 0) löschen
                    document.Formular.dropdownStadt.options[0] = null;
                }

Danke. :)
 
Zurück
Oben