Element VS Node

Element:是一个通用性非常强的基类
Node:是一个接口,各种类型的 DOM API 对象会从这个接口继承。DOM中的ElementTextComment都继承于它
换句话说:ElementTextComment是三种特殊的Node,它们分别叫做ELEMENT_NODE,
TEXT_NODECOMMENT_NODE
所以我们平时使用的html上的元素,即Element是类型为ELEMENT_NODENode
Node.nodeType可以查看节点的类型,返回数字可以查下面的表

Name Value
ELEMENT_NODE 1
ATTRIBUTE_NODE 2
TEXT_NODE 3
CDATA_SECTION_NODE 4
ENTITY_REFERENCE_NODE 5
ENTITY_NODE 6
PROCESSING_INSTRUCTION_NODE 7
COMMENT_NODE 8
DOCUMENT_NODE 9
DOCUMENT_TYPE_NODE 10
DOCUMENT_FRAGMENT_NODE 11
NOTATION_NODE 12

NodeList VS ElementCollection

我们用childNodes找到了NodeList,但我们操作DOM时往往不想操作Node(我只想操作元素Element),那么如何获取ElementList呢?
其实我们经常使用的getElementsByXXX返回的就是一个ElementList,只不过它的真实名字是ElementCollection
就像NodeListNode的集合一样,ElementCollection也是Element的集合。但需要特别注意的是:

  • NodeListElementCollcetion都不是真正的数组
  • 如果document.getElementsByTagName('a') instanceof Array,那么必然是false

    HTMLCollection 表示HTML元素