在讨论文档对象模型(DOM)或类似树形结构的节点时,type
、tag
和 content
是常见的节点属性,用于描述节点的类型、标签和内容。以下是这些属性的详细解释:
type
(节点类型)element
**:表示元素节点(如 <div>
、<p>
)。text
**:表示文本节点(元素内的纯文本)。comment
**:表示注释节点(如 <!-- 注释 -->
)。document
**:表示文档根节点。doctype
**:表示文档类型声明(如 <!DOCTYPE html>
)。// 假设有一个文本节点
const textNode = document.createTextNode("Hello");
console.log(textNode.nodeType); // 3(Node.TEXT_NODE,数值形式)
// 在抽象语法树(AST)或某些库中可能直接返回 "text"。
tag
(标签名)div
、p
)。tag
通常为 null
或不存在。DIV
)或小写(取决于解析器)。const div = document.createElement("div");
console.log(div.tagName); // "DIV"(HTML 中通常返回大写)
// 在虚拟 DOM 或某些库中可能为小写 "div"。
content
(节点内容)"Hello"
)。"注释内容"
)。content
可能是子节点的集合,而非直接的字符串。innerHTML
或 textContent
来获取内容。const textNode = document.createTextNode("Hello");
console.log(textNode.textContent); // "Hello"
const div = document.createElement("div");
div.innerHTML = "<span>Hi</span>";
console.log(div.textContent); // "Hi"(所有子文本合并)
DOM 操作:
nodeType
检查类型,tagName
获取标签,textContent
获取文本。const node = document.querySelector("p");
console.log(node.nodeType); // 1(Node.ELEMENT_NODE)
console.log(node.tagName); // "P"
console.log(node.textContent); // 段落文本
虚拟 DOM/AST:
{ type: 'element', tag: 'div', content: [...] }
。Markdown/HTML 解析:
type
可能是 heading
、paragraph
,tag
对应 HTML 标签,content
包含子节点。属性 | 适用节点 | 说明 | 示例值 |
---|---|---|---|
type |
所有节点 | 节点类型(元素、文本等) | "element" , "text" |
tag |
元素节点 | 标签名(大小写敏感) | "div" , "P" |
content |
文本/元素/注释节点 | 文本内容或子节点列表 | "Hello" , [childNodes] |
具体实现可能因库或框架而异,但核心概念类似。