DOM简介

Frontend SELF ZH
第 41 级 , 课程 0
可用

1.1 DOM的基本概念

文档对象模型 (DOM) 是用于网页文档的编程接口。它将文档的结构表示为节点树,其中每个节点都是文档的一部分,例如元素、文本、注释等。了解DOM及其节点是掌握网页技术的基础。

DOM的基本概念

什么是DOM?

DOM (Document Object Model) 表示一种描述HTML文档内容的层次结构。它允许程序和脚本动态访问文档内容,并修改其结构、样式和内容。

节点和元素

在DOM中,文档的所有部分都被视为节点(node)。节点分为几种类型:

  1. 元素节点:表示HTML标签。
  2. 文本节点:表示元素节点内的文本。
  3. 注释节点:表示HTML中的注释。
  4. 文档节点:表示整个文档。

节点树

DOM以树状结构表示,每个节点可以有子节点(子节点)。根节点是对象document,它代表整个HTML文档。

DOM结构示例:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Document Title</title>
        </head>
        <body>
          <h1>Hello, World!</h1>
          <p>This is a paragraph.</p>
        </body>
      </html>
    
  

对于这个文档,DOM树将如下所示:

Text
    
      document
      └── html
          ├── head
          │   └── title
          │       └── #text: "Document Title"
          └── body
              ├── h1
              │   └── #text: "Hello, World!"
              └── p
                  └── #text: "This is a paragraph."
    
  

1.2 节点类型

1. 元素节点

元素节点对应于HTML标签。例如,<body>标签的节点称为元素节点。

示例:

在这个示例中,<body><h1> 是元素节点。

HTML
    
      <body>
        <h1>Hello, World!</h1>
      </body>
    
  

2. 文本节点

文本节点包含在元素节点内的文本。文本节点是元素节点的子节点,并包含字符串数据。

示例:

在这个示例中,文本 "Hello, World!" 是文本节点,是 <h1> 节点的子节点。

HTML
    
      <h1>Hello, World!</h1>
    
  

3. 注释节点

注释节点表示HTML中的注释,以 <!-- 开始并以 --> 结束。

示例:

在这个示例中,<!-- This is a comment --> 是一个注释节点。

HTML
    
      <!-- This is a comment -->

      <p>This is a paragraph.</p>
    
  

4. 文档节点

文档节点是DOM树的根节点,是文档中所有其他节点的父节点。

示例:

JavaScript中的document对象表示文档节点:

JavaScript
    
      console.log(document);
    
  

1.3 交互DOM节点

1. 获取节点信息

节点对象的属性允许获取有关特定节点的信息。例如,可以查找节点的类型、名称和内容。

示例:

HTML
    
      <html>
        <head>
          <title>我的网站</title>
        </head>
        <body>
          <h1>你好,世界!</h1>
        </body>
      </html>
    
  
JavaScript
    
      const heading = document.querySelector('h1');

      console.log(heading.nodeName); // 输出: H1
      console.log(heading.nodeType); // 输出: 1 (元素节点)
      console.log(heading.textContent); // 输出: "你好,世界!"
    
  

2. 修改节点内容

可以使用DOM的属性和方法修改节点内容。

示例:

JavaScript
    
      const paragraph = document.querySelector('p');
      paragraph.textContent = '更新后的文本内容';
    
  

3. 操作子节点

每个DOM节点可以有子节点,可以访问和修改这些子节点。

示例:

HTML
    
      <html>
        <head>
          <title>我的网站</title>
        </head>
        <body>
          <ul>
            <li>关于我们</li>
            <li>职业机会</li>
            <li>联系</li>
          </ul>
        </body>
      </html>
    
  
JavaScript
    
      const list = document.querySelector('ul');
      const firstItem = list.firstElementChild;
      const lastItem = list.lastElementChild;

      console.log(firstItem.textContent); // 输出列表中第一个元素的文本
      console.log(lastItem.textContent); // 输出列表中最后一个元素的文本
    
  

1.4 有用的属性

1. 属性 nodeName 和 nodeType

  • nodeName 返回节点名
  • nodeType 返回节点类型(例如,1 表示元素节点,3 表示文本节点)

示例:

HTML
    
      <html>
        <head>
          <title>我的网站</title>
        </head>
        <body>
          <h1>你好,世界!</h1>
        </body>
      </html>
    
  
JavaScript
    
      const element = document.querySelector('h1');

      console.log(element.nodeName); // 输出: H1
      console.log(element.nodeType); // 输出: 1
    
  

2. 属性 textContent 和 innerHTML

  • textContent 返回或设置节点的文本内容
  • innerHTML 返回或设置节点的HTML内容

示例:

HTML
    
      <html>
        <head>
          <title>我的网站</title>
        </head>
        <body>
          <p>确实是一个<b>有趣的</b>和<b>有用的</b>段落!</p>
        </body>
      </html>
    
  
JavaScript
    
      const element = document.querySelector('p');

      console.log(element.textContent); // 输出段落的文本内容
      console.log(element.innerHTML); // 输出段落的HTML内容
    
  

3. 属性 parentNode, childNodes, firstChild 和 lastChild

  • parentNode 返回父节点
  • childNodes 返回所有子节点的集合
  • firstChild 返回第一个子节点
  • lastChild 返回最后一个子节点

示例:

HTML
    
      <html>
        <head>
          <title>我的网站</title>
        </head>
        <body>
          <ul>
            <li>关于我们</li>
            <li>职业机会</li>
            <li>联系</li>
          </ul>
        </body>
      </html>
    
  
JavaScript
    
      const element = document.querySelector('ul');

      console.log(element.parentNode); // 输出父节点
      console.log(element.childNodes); // 输出子节点的集合
      console.log(element.firstChild); // 输出第一个子节点
      console.log(element.lastChild); // 输出最后一个子节点
    
  
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION