Erstellen Sie eine Knotenliste von einem einzelnen Knoten in JavaScript

8

Dies ist einer von denen, es scheint so einfach, aber ich kann mir keinen guten Weg vorstellen.

Ich habe einen Knoten, vielleicht nodelist = document.getElementById("mydiv"); - Ich muss dies zu einer Knotenliste normalisieren. Und auch kein Array: ein echtes, bona-fide nodeList -Objekt.

Nicht nodelist = [document.getElementById("mydiv")];

Keine Bibliotheken, bitte.

    
Randy Hall 12.11.2012, 21:36
quelle

5 Antworten

3

Dies wiederbeleben, weil ich mich kürzlich an etwas über JavaScript erinnert habe. Dies hängt davon ab, wie die NodeList geprüft wird, aber ..

%Vor%

Nun, wenn Sie das tun

%Vor%

und list haben Eigenschaften Länge 1 und 0 als Ihr Knoten sowie alles, was von NodeList übernommen wurde.

Wenn Sie Object.create nicht verwenden können, können Sie dasselbe tun, außer als Konstruktor mit dem Prototyp nodelist und setzen Sie this['0'] = node; , this['length'] = 1; und erstellen Sie mit new .

    
Paul S. 04.07.2013, 14:20
quelle
6

Nimm irgendein Element, das bereits in JavaScript referenziert wurde, gib ihm ein Attribut, das wir mit einem Selektor finden können, finde es als Liste, entferne das Attribut, gib die Liste zurück.

%Vor%

Erweitert von bfavarettos Antwort.

%Vor%

Es gibt eine andere Möglichkeit, dies zu tun, an die ich kürzlich gedacht habe

%Vor%

Jetzt

%Vor%     
Paul S. 13.11.2012 15:25
quelle
5

Wenn Sie Browser verwenden, die document.querySelectorAll unterstützen, wird dies immer der Fall sein Gebe ein NodeList zurück. Also:

%Vor%     
bfavaretto 12.11.2012 21:42
quelle
1
%Vor%     
Orbiting Eden 12.11.2012 21:44
quelle
0

Noch eine andere Möglichkeit, dies basierend auf Reflect.construct zu tun: Ссылка

Wie in anderen Fällen muss NodeList.prototype.item gepatcht werden, damit Aufrufe dieser Funktion funktionieren.

%Vor%

Um es mit Knoten zu erstellen, übergeben Sie Array von Knoten als zweites Argument. Diese Methode übergibt Prüfungen:

%Vor%

Array, das damit erstellt wurde, ist mit for..of , forEach und anderen Standardmethoden iterierbar und Sie können Elemente mit einfachem nl[n] = node; hinzufügen.

    
Lain inVerse 06.09.2017 11:59
quelle

Tags und Links