@nietaL: Ich glaube du hast mich falsch verstanden, bzw. hast nen Dreher drin.
Du kannst es auf zwei Arten machen:
a) Entweder du gehtst für jede Stadt jedes Kind durch, und entfernt bei jedem Durchlauf einer Stadt ein oder mehrere Kinder (unsicher, weil .children sich während der Laufzeit ändert), oder
b) du gehst alle Kinder durch, und schaust ob der Wert in einem Städtenamen vorkommt oder gleicht, in dem du das Array der Städte von Anfang bis Ende durchgehst
Ich "glaube", ne andere sinnvolle Methode gibt es nicht.
Du hast:
a) parent ==> input type="select"
b) parent.children ==> option value="Hamburg", option value="München", option value="Freiburg" usw...
c) das Vergleichsarray ==> ["Freiburg", "Augsburg", "Stralsund", "Bremen", "München", "Hamburg]
Das hier:
array.indexOf("optionValue") geht jedes Element in Vergleichsarray durch, bis es einen Treffer hat.
[kw]for (var childIndex = 0; i < op.children.length; childindex++)[/kw]
brauchst du nicht, du kannst über die Elemente auch so laufen:
[kw]for (var child in op.children)[/kw]
"child" ist hierbei ein Index, der Index [kw]i[/kw] (var i = 0....) in deinem Code.
Um das Element anzusprechen, machst du zum Beispiel:
[kw]elternHTMLNode.children[child][/kw]
Um den Wert zu nehmen
[kw]elternHTMLNode.children[child].value[/kw]
Und um zu vergleichen ob der Wert im Array ist:
[kw]staedte.indexOf(elternHTMLNode.children[child].value) !== -1[/kw]
!== -1 -----> -1 heißt, nicht gefunden. Und Liste/String... indexOf ("wert"), suche "Wert" in Liste oder String, alles was nicht -1 ist, heißt, gefunden an Position/Zeichenindex 0 bis Länge... oder eben -1, wenn der Wert nicht enthalten ist.
Aber versuch mal selbst:
[kw]console.log( ['Hamburg-City', 'München-City', 'München', 'Altona'].indexOf('München') )[/kw]
und
[kw]console.log( ['Hamburg-City', 'München-City', 'Münchene', 'Altona'].indexOf('München') )[/kw]
merkst du den Unterschied? - Ich hab hier "München
e" geschrieben, das ist != "München", nach dem wir suchen, und danach kommt es auch nicht mit exaktem Treffer.
oder
[kw]console.log ( 'Teststring hier steht TExt'.indexOf('hier') )[/kw]
und
[kw]console.log ( 'Teststring hierEEE steht TExt'.indexOf('hier') )[/kw]
In einem String wird das "hierEEE" trotzdem mit String.indexOf("hier") erkannt, obwohl es "hierEEE" ist, das ist zu beachten.
anders ist es, wenn du
[kw]console.log( 'Teststring' === 'Test' )[/kw]
und
[kw]console.log( 'Teststring' === 'Teststring' )[/kw]
--- [2017-12-30 03:01 CET] Automatisch zusammengeführter Beitrag ---
Wenn du ein Kindelement aus einem ElternHTML-Objekt löschen willst:
[src="javascript]op.removeChild(op.children[child])[/src]
op ist ja ElternHTMLKnoten in dem Fall, bzw. "parent" (in meinem Beispiel).
Wenn du nur ein Element entfernen willst ,ist das
[kw]for (var kindElement in op.children)[/kw]
nicht verkehrt.
Was auch gut ist, ein "break" bei einem Treffer zu setzen, damit die Schleife nicht unnütz über andere Elemente fortlaufend iteriert.