DOM节点类型的nodeType属性共有12种数值(1-12),分别对应不同的节点类型,具体如下:
元素节点(
Node.ELEMENT_NODE,值为1)
HTML标签元素,如<div>、<p>,其nodeName为大写标签名,nodeValue为null属性节点(
Node.ATTRIBUTE_NODE,值为2)
标签属性,如class="box",存在于元素的attributes集合中,nodeName为属性名,nodeValue为属性值文本节点(
Node.TEXT_NODE,值为3)
标签内的文本内容,nodeName为#text,nodeValue为文本字符串CDATA节点(
Node.CDATA_SECTION_NODE,值为4)
用于XML的CDATA区块,保留原始文本格式实体引用节点(
Node.ENTITY_REFERENCE_NODE,值为5)
XML中的实体引用,如&实体节点(
Node.ENTITY_NODE,值为6)
DTD中定义的实体处理指令节点(
Node.PROCESSING_INSTRUCTION_NODE,值为7)
XML处理指令,如<?xml-stylesheet ...?>注释节点(
Node.COMMENT_NODE,值为8)
HTML注释内容,nodeName为#comment,nodeValue为注释文本文档节点(
Node.DOCUMENT_NODE,值为9)
整个文档的根节点(document对象)文档类型节点(
Node.DOCUMENT_TYPE_NODE,值为10)<!DOCTYPE>声明,nodeName为html等文档类型名文档片段节点(
Node.DOCUMENT_FRAGMENT_NODE,值为11)
轻量级文档容器,用于批量操作节点DTD声明节点(
Node.NOTATION_NODE,值为12)
DTD中声明的符号类型
常见类型示例
// 元素节点(1)
console.log(document.body.nodeType); // 1
// 属性节点(2)
const attr = document.body.getAttributeNode('class');
console.log(attr?.nodeType); // 2(若存在class属性)
// 文本节点(3)
const text = document.createTextNode('Hello');
console.log(text.nodeType); // 3