DOM 节点类型学习笔记

什么是DOM?

DOM(Document Object Model) 文档对象模型,是一种表示和操作 HTML、XML 等文档的标准对象模型。通过 DOM,在页面加载后,可以使用 JavaScript 来操作文档中的任何元素。DOM 将文档呈现为带有层次结构的节点树。通过将网页解析成节点树,开发者便可以使用编程语言来修改其内容、属性和样式。

节点类型

在 DOM 中,每个 HTML 元素都被表示为一个节点,每个节点都有自己的类型。下面是常用的节点类型:

  • 元素节点(Element Node):HTML 标签被解析为元素节点。例如 <div><a><p> 等。
  • 属性节点(Attribute Node):元素的属性被解析为属性节点。例如 hrefsrcclass 等。
  • 文本节点(Text Node):元素的文本内容被解析为文本节点。例如 <p>这是一段文本</p> 中的 “这是一段文本”。
  • 注释节点(Comment Node):HTML 中注释被解析为注释节点。例如 <!-- 这是一段注释 -->

举例说明

htmlCopy Code
<!DOCTYPE html> <html> <head> <title>DOM节点类型</title> </head> <body> <div id="container"> <h1>DOM节点类型</h1> <p>元素节点示例</p> <a href="#">属性节点示例</a> <p>文本节点示例</p> <!-- 注释节点示例 --> </div> <script> var container = document.getElementById("container"); console.log(container.nodeType); // 输出 1,表示 Element Node var link = container.getElementsByTagName("a")[0]; console.log(link.getAttributeNode("href").nodeType); // 输出 2,表示 Attribute Node var pNode = container.getElementsByTagName("p")[0]; console.log(pNode.childNodes[0].nodeType); // 输出 3,表示 Text Node var comment = container.childNodes[3]; console.log(comment.nodeType); // 输出 8,表示 Comment Node </script> </body> </html>

在上面的示例中,我们创建了一个包含不同节点类型的 HTML 文档,并使用 JavaScript 获取了它们的节点类型。例如,document.getElementById("container") 获取到的是一个元素节点,而 container.getElementsByTagName("a")[0].getAttributeNode("href") 获取到的则是一个属性节点。