📜  JavaScript中的children和childNodes有什么区别?(1)

📅  最后修改于: 2023-12-03 14:42:40.006000             🧑  作者: Mango

JavaScript中的children和childNodes的区别

在 JavaScript 中,childrenchildNodes 是用于访问元素的子节点的两个属性。它们的主要区别如下:

1. children 属性

children 属性是一个只读属性,返回指定元素的子元素集合,其中只包含元素节点。它不包括其他类型的节点,如文本节点或注释节点。

const parent = document.getElementById("parentElement");
const children = parent.children;

console.log(children.length); // 子元素的数量
for (let i = 0; i < children.length; i++) {
  console.log(children[i]); // 子元素节点
}

children 属性返回的是一个实时的 HTMLCollection,当子元素发生变化时会自动更新。它不包含空白文本节点和注释节点。

2. childNodes 属性

childNodes 属性也是一个只读属性,返回指定元素的子节点集合。它包含元素节点、文本节点以及其他类型的节点,如注释节点。

const parent = document.getElementById("parentElement");
const childNodes = parent.childNodes;

console.log(childNodes.length); // 子节点的数量
for (let i = 0; i < childNodes.length; i++) {
  console.log(childNodes[i]); // 子节点,包括元素节点、文本节点和注释节点
}

childNodes 属性返回的是一个实时的 NodeList,当子节点发生变化时也会自动更新。它包含所有的子节点,包括空白文本节点和注释节点。

总结
  • children 属性只包含元素节点,不包括其他类型的节点。
  • children 属性返回的是 HTMLCollection,自动更新。
  • childNodes 属性包含所有的子节点,包括元素节点、文本节点和注释节点。
  • childNodes 属性返回的是 NodeList,自动更新。

根据具体需求,你可以选择使用 children 属性或 childNodes 属性来访问元素的子节点。