ChrisB: Array wird automatisch verändert

Beitrag lesen

Hi,

var links = content.document.getElementsByTagName("a");

Dadurch, dass ich in jedem Schleifendurchgang einen neuen Link generiere, verändert sich merkwürdigerweise das Array "links", obwohl dieser Variable nie ein neuer Wert zugewiesen wird. Irgendwie aktualisiert es sich von selbst?! o0

Natuerlich - dein links ist lediglich eine Referenz auf die NodeList, die getElementsByTagName liefert. Und eine grundlegende Eigenschaft von NodeLists, bzw. eine elementare Anforderung an diese, ist nun mal, dass sie den DOM-Zustand "live" wiedergeben.
(Eine NodeList ist auch kein Array - sie hat lediglich einige gaengige Methoden mit diesem gemein.)

Dadurch kann ich zB im Schleifenkopf nicht links.length verwenden, da dieser Wert variabel ist und eine Endlosschleife verursachen würde.

Du koenntest ja bspw., wenn du gerade einen neuen Link erstellt und vor dem aktuellen eingefuegt hast, den Schleifenzaehler selber um eins hochzaehlen.

Auf jedenfall baut er jetzt alle neuen Links hintereinander, da der neu hinzugefügte Link sich komischerweise im links-Array befindet.

Nicht komischer-, sondern absolutermussgenausosein-weise.

Wie bekomme ich ein Array der Links hin, welches nicht meine neu hinzugefügten beinhaltet?

Das brauchst du eigentlich nicht, wenn du's halbwegs geschickt angehst.
Sonst muesstest du dir wirklich erst die Referenzen auf die einzelnen Linkelemente selbst als Elemente eines eigenen, "richtigen" Arrays hinterlegen. Umstaendlich ...

MfG ChrisB

--
"The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."