HTMLCollection

HTMLCollection 接口表示一个包含了元素(元素顺序为文档流中的顺序)的通用集合(与 arguments 相似的类数组 (array-like) 对象),还提供了用来从该集合中选择元素的方法和属性。

Element.children

Element.children 是一个只读属性,返回 一个 Node 的子elements ,是一个动态更新的 HTMLCollection

Node.childNodes

Node.childNodes 返回包含指定节点的子节点的集合,该集合为即时更新的集合(live collection)。ndList 变量为 NodeList 类型,且为只读。
document节点 (文档节点) 包含两个子节点: Doctype 声明和根节点。

NodeList

NodeList 对象是节点的集合,通常是由属性,如Node.childNodes 和 方法,如document.querySelectorAll 返回的。

  1. var list = document.querySelectorAll('input[type=checkbox]'); Array.prototype.forEach.call(list, function (checkbox) { checkbox.checked = true; });

除了 forEach 方法,NodeList 没有这些类似数组的方法。

children 和 childNodes区别

返回的形式都是类数组,children是HTMLCollection , childNodes是NodeList
文本节点也是childNodes , 而children只能是标签元素

  1. Element.children.元素id
  2. Element.children.item(0/1/2/3...)
  3. Element.children.length
  4. Element.childNodes.forEach()
  5. Element.childNodes.hasOwnProperty()
  6. Element.childNodes.item()
  7. Element.childNodes.keys()
  8. Element.childNodes.length
  9. Element.childNodes.values()

总结: childNodes方法更多,更像是对象. children方法比较少

只遍历标签元素用children