Node:nodeType 属性

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

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