Node:nodeType 属性

Node 接口的只读属性 nodeType 表示该节点的类型。它可用来区分不同类型的节点,比如元素文本注释

一个指定节点类型的整数。可能的值有:

Node.ELEMENT_NODE1

一个元素节点,例如 <p><div>

Node.ATTRIBUTE_NODE2

元素属性

Node.TEXT_NODE3

元素或者属性中实际的文本

Node.CDATA_SECTION_NODE4

一个 CDATASection,例如 <!CDATA[[ … ]]>

Node.PROCESSING_INSTRUCTION_NODE7

一个用于 XML 文档的 ProcessingInstruction,例如 <?xml-stylesheet ... ?> 声明。

Node.COMMENT_NODE8

一个注释节点,例如 <!-- … -->

Node.DOCUMENT_NODE9

一个 Document 节点。

Node.DOCUMENT_TYPE_NODE10

描述文档类型的 DocumentType 节点。例如 <!DOCTYPE html>

Node.DOCUMENT_FRAGMENT_NODE11

一个 DocumentFragment 节点

以下的常量已被弃用且不再使用:Node.ENTITY_REFERENCE_NODE5)、Node.ENTITY_NODE6)和 Node.NOTATION_NODE12)。

示例

不同的节点类型

js
document.nodeType === Node.DOCUMENT_NODE; // true
document.doctype.nodeType === Node.DOCUMENT_TYPE_NODE; // true

document.createDocumentFragment().nodeType === Node.DOCUMENT_FRAGMENT_NODE; // true

const p = document.createElement("p");
p.textContent = "很久很久以前……";

p.nodeType === Node.ELEMENT_NODE; // true
p.firstChild.nodeType === Node.TEXT_NODE; // true

注释

该示例会检查 document 下第一个节点是不是注释,如果不是,则会提醒。

js
const node = document.documentElement.firstChild;
if (node.nodeType !== Node.COMMENT_NODE) {
  console.warn("你应该认真编写代码注释!");
}

规范

Specification
DOM Standard
# ref-for-dom-node-nodetype①

浏览器兼容性

BCD tables only load in the browser