• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

select.option suchen und löschen

nietaL

NGBler

Registriert
8 Sep. 2013
Beiträge
231
Ort
Exilgullianer
Hey ho,

ich habe ein Array "staedte" mit Ortsnamen. Ein Selektmenü "ziel" hat unter anderen auch die im Array ausgezeichneten Gebiete als Optionen. Eben die, die auch im Array vorkommen sollen nun geslöscht werden.


[src=javascript]var staedte = ["Berlin", "München", "Frankfurt"];
var op = document.getElementById("ziel").getElementsByTagName("option");

for (var i = 0; i < op.length; i++)
{
if(staedte.indexOf(op.text) > -1)
{
// op löschen
}
}[/src]

Ich kriegs einfach nicht hin, den kommentierten Bereich entsprechend zu schreiben. Hat jemand nen Tip?
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.561
Moin und tschüss ;)

[src=javascript]for (option in parent.children) {
if (parent[option].value.indexOf(stadt) !== -1) parent.removeChild(parent[option])
][/src]

Irgendwie so?

Oder

[src=javascript]if (staedte.indexOf(option.value) !== -1) then removeThisOption...[/src]

Wenn es gefunden wird, ist es nicht = -1 - alles ander zeigt, das es an Position 0+ gefunden wurde, der Suchstring.
 

KaPiTN

♪♪♫ wild at heart ♪♫♫♪

Registriert
14 Juli 2013
Beiträge
29.138
Die Anzahl der Elemente eines Arrays kannst Du nicht ändern.
Entweder erstellst Du ein neues Array ohne das entsprechende Element oder Du verzichtest auf Array und nimmst direkt etwas wie List.
 

nietaL

NGBler

Registriert
8 Sep. 2013
Beiträge
231
Ort
Exilgullianer
  • Thread Starter Thread Starter
  • #4
[src=javascript] for (var i = 0; i < op.length; i++)
{
for (op in parent.children) {
if (parent[op].value.indexOf(staedte) !== -1) parent.removeChild(parent[op])
}
}[/src]

Da tut sich nichts oder hab ich dich falsch verstanden?

@Kapitn: Ich will nicht das Array bearbeiten sondern das select-element, indem ich eine option lösche.


Ich dachte zunächst an sowas hier:
[src=javascript] var staedte = ["Berlin", "München", "Frankfurt"];
var op = document.getElementById("ziel").getElementsByTagName("option");

for (var i = 0; i < op.length; i++)
{
if(staedte.indexOf(op.text) > -1)
{
document.versenden.ziel.options[????] = null; // die Option löschen, die den Text op.text besitzt
}
}
[/src]
Ich weiß nur nicht, wie ich die entsprechende Option anspreche. Das Iterations-i kann ich nicht nehmen,
 
Zuletzt bearbeitet:

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.561
@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ünchene" 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.
 
Zuletzt bearbeitet:

nietaL

NGBler

Registriert
8 Sep. 2013
Beiträge
231
Ort
Exilgullianer
  • Thread Starter Thread Starter
  • #6
Merci für die ausführliche Anleitung. Nach 3-4 Anläufen hat's dann auch geklappt. :beer:
 
Oben