"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > En quoi les collections HTML, les listes de nœuds et les tableaux d'objets diffèrent-ils dans la manipulation du DOM ?

En quoi les collections HTML, les listes de nœuds et les tableaux d'objets diffèrent-ils dans la manipulation du DOM ?

Publié le 2024-11-10
Parcourir:824

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

Distinguer les collections HTML, les listes de nœuds et les tableaux d'objets dans le DOM

Lors de l'accès aux nœuds DOM, les développeurs rencontrent souvent des collections HTML, des listes de nœuds et des tableaux d'objets. Comprendre les différences entre ces structures de données est crucial pour manipuler efficacement la structure du document.

HTMLCollections vs. NodeLists

HTMLCollections et NodeLists partagent des similitudes en tant que collections de nœuds, mais elles ont caractéristiques distinctes :

  • Contenu : Les HTMLCollections contiennent uniquement des nœuds d'élément, tandis que les NodeLists peuvent contenir n'importe quel type de nœud.
  • Méthodes : In En plus des méthodes communes à toutes les collections, HTMLCollections fournit la méthode nomméeItem pour accéder aux éléments par leur nom.

Live vs. Snapshot Collections

Les collections DOM peuvent être soit live ou snapshot :

  • Live : Les collections sont mises à jour automatiquement lorsque des modifications sont apportées au DOM.
  • Snapshot : Les collections restent fixes, quelles que soient les modifications du DOM.

Les collections DOM renvoyées par les méthodes du navigateur (par exemple, getElementsByTagName) sont généralement actives, tandis que les sélections jQuery sont des instantanés.

Tableaux vs tableaux d'objets

Bien que les objets jQuery apparaissent sous forme de tableaux dans les journaux de la console, ce sont en réalité des tableaux d'objets :

  • Tableaux : Collections séquentielles accessibles à l'aide d'index numériques.
  • Tableaux d'objets : Tableaux dans lesquels les éléments sont accessibles à l'aide de propriétés numériques et nommées.

Sélection de nœuds

Utilisation des méthodes de document :

  • document.getElementsByTagName("td") : renvoie une collection HTML de tous les éléments td.
  • document.getElementsByClassName("myRow") : renvoie une NodeList de tous les éléments avec la classe "myRow".

Utilisation de jQuery :

  • $("td") : sélectionne tous les éléments td et renvoie un objet jQuery, un tableau d'objets.

Exemple de script

Le script fourni montre les différences entre les structures de données :

  • console.log('[123,"abc",321,"cba"]=[123,"abc",321,"cba"] : compare les tableaux.
  • console.log('{ 123:123,abc:"abc",321:321,cba:"cba"}={123:123,abc:"abc",321:321,cba:"cba"} : compare les tableaux d'objets avec la syntaxe d'objet.
  • console.log('Node=',Node) : enregistre l'objet Node global, qui est un tableau d'objets représentant les types de nœuds.
  • console.log('document.links=', document.links) : Enregistre une collection HTML de liens.
  • console.log('document.getElementById("myTable")=',document.getElementById("myTable")) : Enregistre un seul élément, pas un collection.
  • console.log('document.getElementsByClassName("myRow")=',document.getElementsByClassName("myRow")) : enregistre une NodeList d'éléments avec la classe "myRow".
  • console.log('document.getElementsByTagName("td")=',document.getElementsByTagName("td")) : enregistre une collection HTML de tous les éléments td.
  • console.log('$(" #myTable")=',$("#myTable")) : enregistre un objet jQuery représentant l'élément #myTable.
  • console.log('$("td")=',$("td ")) : Enregistre un tableau d'objets jQuery contenant tous les éléments td.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3