peterS.: »live [NodeList]«s, [HTMLCollection]s, [Array]s

Beitrag lesen

gruss Spoons,

ich ermittle mittels JS alle Links (A-Tags) einer Seite und
möchte vor jedem Link einen neu erstellten darstellen.
So sieht das derzeit aus:

...[code/]

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?!

Du verwendest eine getter-methode des DOM, die laut spezifikation
eine sogenannte »live [NodeList]« zurueckliefern soll.

geckos machen da, glaube ich, zweimal was falsch; sie geben vor,
eine [HTMLCollection] zurueckzuliefern, die ja nicht *lebendig*
sein soll, sich dort aber trotzdem so verhaelt.

»molily« (Mathias Schaefer) wird Dir dazu bestimmt erschoepfender
und korrekt auskunft geben, wenn er in diesm thread aufschlaegt.

wenn Du wirklich nur an links interessiert bist, dann probier
doch mal das verhalten der [HTMLCollection] »document.links« aus.

falls diese sich in geckos ebenfalls nicht handhaben laesst, dann
musst Du deine [HTMLCollection] bzw. [NodeList] explizit in ein
array ueberfuehren ...

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

... ungefaehr so - code:

var list;  
list = Array.filter(document.links, (function () {return true;}));  
list = Array.filter(document.getElementsByTagName("a", (function () {return true;}));

so long - peterS. - pseliger@gmx.net

--
»Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - Douglas Crockford
ie:( fl:) br:> va:( ls:& fo:) rl:) n3;} n4:} ss:} de:µ js:} mo:? zu:]