„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie unterscheiden sich HTMLCollections, NodeLists und Object Arrays bei der DOM-Manipulation?

Wie unterscheiden sich HTMLCollections, NodeLists und Object Arrays bei der DOM-Manipulation?

Veröffentlicht am 10.11.2024
Durchsuche:747

How do HTMLCollections, NodeLists, and Object Arrays Differ in DOM Manipulation?

Unterscheidung von HTMLCollections, NodeLists und Objektarrays in DOM

Beim Zugriff auf DOM-Knoten stoßen Entwickler häufig auf HTMLCollections, NodeLists und Objektarrays. Das Verständnis der Unterschiede zwischen diesen Datenstrukturen ist von entscheidender Bedeutung, um die Dokumentstruktur effektiv zu manipulieren.

HTMLCollections vs. NodeLists

HTMLCollections und NodeLists haben Ähnlichkeiten als Knotensammlungen, aber sie haben Ähnlichkeiten Besondere Merkmale:

  • Inhalt: HTMLCollections enthalten nur Elementknoten, während NodeLists jeden Knotentyp enthalten können.
  • Methoden: In Zusätzlich zu den Methoden, die allen Sammlungen gemeinsam sind, stellen HTMLCollections die Methode „namedItem“ für den Zugriff auf Elemente nach Namen bereit.

Live vs. Snapshot Collections

DOM-Sammlungen können beides sein Live oder Snapshot:

  • Live: Sammlungen werden automatisch aktualisiert, wenn Änderungen am DOM vorgenommen werden.
  • Snapshot: Sammlungen bleiben unverändert, unabhängig von DOM-Änderungen.

DOM-Sammlungen, die von Browsermethoden (z. B. getElementsByTagName) zurückgegeben werden, sind normalerweise live, während jQuery-Auswahlen Schnappschüsse sind.

Arrays vs. Objektarrays

Während jQuery-Objekte als Arrays in Konsolenprotokollen angezeigt werden, handelt es sich tatsächlich um Objektarrays:

  • Arrays: Sequentielle Sammlungen, auf die über numerische Indizes zugegriffen wird.
  • Objektarrays: Arrays, in denen auf Elemente sowohl über numerische als auch benannte Eigenschaften zugegriffen wird.

Auswählen von Knoten

Dokumentmethoden verwenden:

  • document.getElementsByTagName("td"): Gibt eine HTMLCollection aller td-Elemente zurück.
  • document.getElementsByClassName("myRow"): Gibt zurück eine NodeList aller Elemente mit der Klasse „myRow“.

Verwenden von jQuery:

  • $("td"): Wählt alle td-Elemente aus und gibt ein jQuery-Objekt, ein Objektarray, zurück.

Beispielskript

Das bereitgestellte Skript veranschaulicht die Unterschiede zwischen Datenstrukturen:

  • console.log('[123,"abc",321,"cba"]=[123,"abc",321,"cba"]: Vergleicht Arrays.
  • console.log('{ 123:123,abc:"abc",321:321,cba:"cba"}={123:123,abc:"abc",321:321,cba:"cba"}: Vergleicht Objektarrays mit der Objektsyntax.
  • console.log('Node=',Node): Protokolliert das globale Node-Objekt, bei dem es sich um ein Objektarray handelt, das Knotentypen darstellt.
  • console.log('document.links=', document.links): Protokolliert eine HTMLCollection von Links.
  • console.log('document.getElementById("myTable")=',document.getElementById("myTable")): Protokolliert ein einzelnes Element, nicht ein Collection.
  • console.log('document.getElementsByClassName("myRow")=',document.getElementsByClassName("myRow")): Protokolliert eine NodeList von Elementen mit der Klasse „myRow“.
  • console.log('document.getElementsByTagName("td")=',document.getElementsByTagName("td")): Protokolliert eine HTMLCollection aller td-Elemente.
  • console.log('$(" #myTable")=',$("#myTable")): Protokolliert ein jQuery-Objekt, das das #myTable-Element darstellt.
  • console.log('$("td")=',$("td ")): Protokolliert ein jQuery-Objektarray, das alle td-Elemente enthält.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3