DOM 操作(Document Object Model 操作)HTML 结构和内容进行动态修改

JavaScript版的DOM总结:DOM是什么以及DOM操作 JavaScript版的DOM总结: DOM是什么以及DOM节点的添加、修改、删除操作以及显示和隐藏 阅读详情

DOM 操作(Document Object Model 操作) 是指通过编程方式(通常使用 JavaScript)对网页的 HTML 结构和内容进行动态修改 的过程。DOM 是浏览器将 HTML 文档解析后生成的一棵“树状结构”,每个 HTML 标签、属性、文本内容都会转化为树中的一个节点(Node)。通过操作这棵树,开发者可以动态地改变页面的内容、样式、结构或响应用户交互。


核心概念

  1. DOM 树
    浏览器将 HTML 解析为一个树形结构,例如:

    <html>
      <head>...</head>
      <body>
        <div id="container">
          <p>Hello World</p>
        </div>
      </body>
    </html>
    

    对应的 DOM 树结构:

    - document
      └─ html
         ├─ head
         └─ body
            └─ div#container
               └─ p
                  └─ "Hello World"
    
  2. 节点(Node)
    DOM 树中的每个组成部分都是一个节点,包括:

    • 元素节点:如 <div>、<p>。
    • 属性节点:如 id="container"。
    • 文本节点:如 "Hello World"。

为什么需要 DOM 操作?

  • 动态更新页面:无需刷新页面即可修改内容(如 Ajax 数据加载)。
  • 用户交互:响应点击、输入等事件(如表单验证、弹窗)。
  • 动态样式:根据条件改变元素的 CSS 样式(如高亮、动画)。
  • 数据绑定:将数据动态渲染到页面(如 Vue/React 框架底层原理)。

常见的 DOM 操作

1. 访问元素
  • 通过 id、class、标签名 或 CSS 选择器获取元素:
    // 通过 id 获取
    const element = document.getElementById("container");
    
    // 通过 class 获取(返回类数组)
    const elements = document.getElementsByClassName("list-item");
    
    // 通过 CSS 选择器获取
    const queryElement = document.querySelector(".button.primary");
    
2. 修改内容
  • 改变元素的文本或 HTML 内容:
    const p = document.querySelector("p");
    p.textContent = "New text"; // 修改文本内容
    p.innerHTML = "<strong>Bold text</strong>"; // 修改 HTML 内容
    
3. 添加/删除节点
  • 动态创建或移除元素:
    // 创建新元素
    const newDiv = document.createElement("div");
    newDiv.textContent = "Dynamic content";
    
    // 添加到 DOM 中
    document.body.appendChild(newDiv);
    
    // 移除元素
    const oldElement = document.getElementById("obsolete");
    oldElement.parentNode.removeChild(oldElement);
    
4. 操作属性
  • 修改元素的属性(如 class、src、disabled):
    const button = document.querySelector("button");
    button.setAttribute("disabled", true); // 设置属性
    button.removeAttribute("disabled");    // 移除属性
    
    // 直接操作 class
    button.classList.add("active");
    button.classList.remove("hidden");
    
5. 样式操作
  • 直接修改 style 属性或切换 CSS 类:
    const box = document.getElementById("box");
    box.style.backgroundColor = "red"; // 直接修改样式
    box.style.display = "none";        // 隐藏元素
    
    // 通过 class 控制样式
    box.classList.add("highlight");
    
6. 事件监听
  • 绑定用户交互事件(如点击、输入):
    const button = document.querySelector("button");
    button.addEventListener("click", () => {
      alert("Button clicked!");
    });
    

DOM 操作的性能问题

  • 重绘(Repaint)与重排(Reflow):频繁修改 DOM 或样式会触发浏览器重新计算布局和渲染,影响性能。
    • 优化方法:
      1. 批量操作 DOM(如使用 DocumentFragment)。
      2. 避免频繁读写交替(如先读取所有需要的数据,再批量修改)。
      3. 使用 classList 替代直接操作 style 属性。

DOM vs. BOM

  • DOM:专注于操作网页内容(HTML/XML 文档)。
  • BOM(Browser Object Model):操作浏览器窗口、导航、历史记录等(如 window.location、window.alert())。

示例:动态列表渲染

// HTML: <ul id="list"></ul>

// JavaScript
const list = document.getElementById("list");
const items = ["Apple", "Banana", "Orange"];

items.forEach(item => {
  const li = document.createElement("li");
  li.textContent = item;
  list.appendChild(li);
});

总结

DOM 操作是前端开发的基础技能,通过 JavaScript 动态控制页面内容和交互。尽管现代框架(如 React、Vue)封装了直接的 DOM 操作,但理解其原理对调试和性能优化至关重要。建议从基础 API 入手,逐步掌握高效操作 DOM 的方法。
学习资源:

手把手教你打造CTF动态靶场 公司想搞一个CTF比赛,需要一个竞赛靶场,于是这个任务就落在了我的身上,平台是利用CTFd框架,基于docker搭建的动态靶场,搭建过程中遇到的坑比较多,这里我会把每一个遇到的坑都指出来。我搭建的是CTFd的3.X的版本。第一次搭建的话,搭建的过程会有些痛苦,但是搭建完成后会越来越熟练,这个平台的可用性还是很高的。由于搭建的过程中遇到的坑太多了,各种各样的问题,所以决定写下这篇文章,把所有的坑都指出来,也算为后边想搭这个平台的小伙伴指一条路。Taps:资源来源:星海安全实验室如果你也对网络安全&黑客。 阅读详情

相关推荐

Zynq 双核AMP 通信

4、配置离线编译(这里不讲),配置linux的内核地址空间(0x4000_0000改为0x2000_0000),以及单核启动。CPU1设置为0x2000_0000~0x3FFF_FFFF(也可以小于0x3FFF_FFFF)如果禁用CPU1的L2 cache,在CPU1的bsp里面添加编译时候所需要的宏。3、配置工程,将vivado产生的.xsa文件复制到amp_com项目目录下。9、使用petalinux-package --boot 打包。一、vivado工程。5、编译u-boot。

y183128184的博客 1087

一篇文带你了解文档对象模型DOM(Document Object Model)

一篇文带你了解文本对象模型DOM(Document Object Model)

cai niaoyihao_的博客 4057

【项目案例】前后端分离项目 【Web图书管理系统 】SpringBoot + Vue + Element UI + Mysql

Web图书管理系统

激流丶的博客 5397

DOM对象(Document Object Model 文档对象模型)

DOM是BOM中window对象的子对象,也是访问和操作HTML文档的入口。通过document对象,可以获取到HTML文档中的元素,并对其进行操作。 它将文档解析为一个由节点和对象组成的树状结构,可以使用这些对象,动态地访问和更新HTML文档的内容、结构和样式。

/*多学习 不油腻*/ 1940

迈德威视相机调用( 基于 Linux系统+ OpenCV )

迈德威视相机调用( 基于 Linux系统+ OpenCV )前言一、登录迈德威视官网,下载官方SDK二、代码调用与视频帧处理( 基于 OpenCV )总结 前言     此博客记录了迈德威视工业相机在 Linux 系统下的代码调用及其环境配置,通过 OpenCV 对视频帧进行处理。   一、登录迈德威视官网,下载官方SDK      迈德威视官网 : http://www.mindvision.com.cn/     1. 进入官网后,在服务支持中选择软件下载。    2. 选择Linux系统S.

kkkkkk0729的博客 5679

EGO_Plannerv2代码学习(一):栅格建图之V1 V2的区别

最近在尝试将高飞老师的集群规划器部署到真实无人机上跑一下,开这个新帖记录下学习过程中的问题和想法。

qq_41069236的博客 5753

【JavaScript】Document Object Model 文档对象模型

DOM 全称是 Document Object Model 文档对象模型。大白话,就是把文档中的标签,属性,文本,转换成为对象来管理。Document 对象的理解:第一点:Document 它管理了所有的 HTML文档内容。第二点:Document 它是一种树结构的文档。有层级关系。第三点:它让我们把所有的标签都对象化。第四点:我们可以通过 Document访问所有的标签对象。注意:document 对象的三个查询方法,如果有 id 属性,优先使用getElementById 方法来进行查询。如果没有...

YOU__FEI的博客 2762

蒙特卡洛+概率潮流!基于蒙特卡洛和新能源出力模拟的概率潮流分布程序代码!

最后,导出光照强度、风速、网损和节点电压的概率分布图,并计算了各节点电压和网损的平均值和方差,展示了接入前后的节点电压对比图。在不确定性增加的电力系统中,概率潮流成为含随机因素规划问题的求解前提,可以更加真实地反映电力系统的全面信息。此外,概率潮流还可用于研究风电和光伏发电出力以及电动汽车消耗功率和向电力系统反向供电功率的不确定性对电力系统的影响,发现系统运行中的潜在风险,为系统运行控制提供参考。概率潮流的目的是揭示电网中随机变量对系统的影响,发现电网中的薄弱环节,为规划和调度部门的决策提供有价值的信息。

weixin_48747334的博客 1920

♥️Javascript之DOM♥️

目录 节点 Node类型 属性 方法 Document类型 属性 DOM编程界面 查找元素 添加元素 Element类型 属性 Text类型 属性和方法 文档对象模型(DOM)是网页的编程接口。它给文档(结构树)提供了一个结构化的表述并且定义了一种方式——程序可以对结构树进行访问,以改变文档的结构,样式和内容。 浏览器会根据DOM模型,将结构化文档(比如HTML和XML)解析成一系列的节点,再由这些节点组成一个树状结构(DOM T...

欢迎 2431

ROS2 多机器人导航仿真入门教程(一)

RMF 是建立在 ROS 2 基础上的一系列可重复使用、可扩展的库和工具,可实现任何类型机器人系统的异构机群的互操作性。RMF 利用标准化的通信协议与部署机器人的基础设施、环境和自动化系统进行通信,以优化关键资源(如机器人、电梯、门、通道等)的使用。它通过资源分配和通过 RMF 核心(将在本书后面详细介绍)防止共享资源冲突,从而为系统增加智能。RMF 灵活而强大,几乎可以在任何通信层上运行,并与任何数量的物联网设备集成。RMF 的架构设计允许随着环境自动化水平的提高而扩展。

2506_90492529的博客 1659

华为Ascend C算子开发能力认证(中级)(个人记录,有完整代码,已通过认证,仅供参考)

本文介绍了在昇腾NPU环境下实现Sigmoid算子的完整流程。首先需要在华为云ModelArts-Notebook或开发者套件上搭建环境,要求CANN版本为8.0.0.beta1。主要内容包括:1)实现SigmoidCustom算子的kernel侧核函数代码;2)完成host侧Tiling结构体实现;3)支持Float16数据类型。代码实现部分详细展示了核函数计算流程、数据拷贝和牛顿迭代优化方法。最后介绍了编译部署流程,包括环境配置、代码上传、编译执行等步骤,并提供了提交规范说明。该实现通过调用Ascend

qq_73044452的博客 1107

JavaScript(JS)的DOM对象(JS的Document对象)----什么是DOM对象?

1、概念: Document Object Model 文档对象模型:将标记语言文档的各个组成部分,封装为对象。可以使用这些对象,对标记语言文档进行CRUD(增删改查)的动态操作。 通过 HTML DOM(如图所示),可访问 JavaScript HTML 文档的所有元素。 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。HTML DOM 模型被...

No8g攻城狮的博客 8339

OpenCV实战系列——图像线条提取

基于内容的图像分析,需要从构成图像的像素集合中提取有意义的特征。轮廓、线条、区域等是基本的图像基元,可用于描述图像中包含的元素。本节将介绍如何提取重要的图像线条特征。

m0_58523831的博客 1万+

DOM(Document Object Model) 文档对象模型

                        DOM(Document Object Model) 文档对象模型一、概述    文档对象(document对象,注意这和DOM不是一个概念,不过我要先行介绍) 代表浏览器窗口的文档,该对象是window对象(以后会有文章详细介绍)的子对象。由于window对象是DOM对象模型中的默认对象,所以window对象中的方法和子对象不需要使用window来...

Jector7的博客 584

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

DOM文档对象模型

Document Object Model(文档对象模型) DOM是针对HTML和XML文档的一个API(Application Programming Interface应用程序编程接口)。DOM描绘了一个层次化的节点树,允许开发人员添加、移除和修改页面的某一部分。 HTML DOM 定义了访问和操作HTML文档的标准方法。 要改变页面的某个东西,JavaScript 就需要获得对 HTML 文...

蒲公英芽的博客 318

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

JavaScript HTML DOM 导航

通过 HTML DOM,您能够使用节点关系来导航节点树。 DOM 节点 根据 W3C HTML DOM 标准,HTML 文档中的所有事物都是节点: 整个文档是文档节点 每个 HTML 元素是元素节点 HTML 元素内的文本是文本节点 每个 HTML 属性是属性节点 所有注释是注释节点 有了 HTML DOM,节点树中的所有节点都能通过 JavaScript 访问。 能够创建新节点,还可以修改和删除所有节点。 节点关系 节点树中的节点彼此之间有一定的等级关系。 术语(父、子和同胞,parent、child

qq_41995845的博客 180

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

掌握 Ajax,第 4 部分: 利用 DOM 进行 Web 响应

Brett McLaughlin, 作者和编辑, O'Reilly Media Inc. 本文内容包括:·Web 程序员和标记 ·进一步了解 Web 浏览器 ·对象的值 ·DOM 简介 ·结束语 程序员(使用后端应用程序)和 Web 程序员(编写 HTML、CSS 和 ...

chenqunan3231的博客 127

对DOM的理解

什么是DOM? 1.理解为HTML和XML的API DOM(document Object Model),是针对HTML和XML的API。 JS等语言可以通过该API对HTML文档进行动态操作,从而实现许多动态交互效果。 2.理解为HTML和XML的一些规范 JavaScript可以根据这些规范来进行各种操作。而这些规范我们可以用树来形象的表示 通过这样的树,我们就可以很快找到我们想要操作的节点,进而进行各种属性,方法,事件等的操作。 ...

Rose✿留白ق೨的博客 241

JavaScript --- DOM简介

什么是DOM? 1.DOM,全称Document Object Model 文档对象模型 2.JS中通过DOM来对HTML文档进行操作,只要了解了DOM就可以随心所欲地操作WEB页面 3.文档 表示整个的HTML文档 4.对象 表示将网页中每一部分都转换为了对象 5.模型 表示对象之间的关系,方便我们获取对象 如图所示 节点 1.节点Node,是构成我们网页的最基本的组成部分,网页中的每一个部分都可以称为是一个节点 2.html 标签,属性,文本,注释,整个文档等都是一个节点 3.虽

weixin_45827708的博客 971

Web Apis

介绍 知道 ECMAScript 与 JavaScript 的关系,Web APIs 是浏览器扩展的功能。 严格意义上讲,我们在 JavaScript 阶段学习的知识绝大部分属于 ECMAScript 的知识体系,ECMAScript 简称 ES 它提供了一套语言标准规范,如变量、数据类型、表达式、语句、函数等语法规则都是由 ECMAScript 规定的。浏览器将 ECMAScript 大部分的规范加以实现,并且在此基础上又扩展一些实用的功能,这些被扩展出来的内容我们称为 Web APIs。 .

gako15587481707的博客 238

DOM 学习

Document Object Model (DOM)是HTML和XML文档的编程接口。它提供了上述文档的一种结构化表示,同时也定义了一种通过程序来改变文档结构,风格,以及内容的方式。 DOM与BOM的关系:BOM包含DOM 文档根节点 var de = document.documentElement; 比如,在chrome浏览器bla...

weixin_34403693的博客 92

2021-10-04

23、doucument对象概念介绍 DOM模型 DOM全称是Doucument Object Model 文档对象模型 就是把文档中的标签,属性,文本,转换为对象来管理。 Document对象 Doucument对象的理解 ​ 第一点:Document它管理了所有的HTML文档内容 ​ 第二点:docunment它是一种树结构的文档。有层级关系。 ​ 第三点:他让我们把所有的标签都对象化。 ​ 第四点:我们可以通过document访问所有标签对象。 ...

sgfy_的博客 117

DOM ------ 节点

节点概述 : 节点至少拥有nodeType(节点类型) nodeName(节点名称) nodeValue(节点值)这三个基本属性 元素节点 : nodeType 为 1, HTML 标签元素 元素节点主要提供了对元素标签名 子节点及属性的访问 属性节点 : nodeType 为 2, 一般是元素节点的属性 文本节点 : nodeType 为 3 ,(文本节点包含文字 空格 换行) DOM中用于呈现文本的部分 //html代码 <div class="box"> <sp

HuoZhiyan 的博客 368

javascript学习笔记---DOM学习

DOM学习参考http://www.w3cschool.cc/htmldom/htmldom-tutorial.html来学习。 转载于:https://www.cnblogs.com/liule1225/p/3791492.html

aisui6594的博客 198

什么是DOM(Document Object Model),它有什么作用

DOM(Document Object Model),即文档对象模型,是W3C组织推荐的处理可扩展标记语言(如HTML或XML)的标准编程接口。DOM的主要作用是将网页或XML文档的内容、结构和样式转换为一个由节点组成的树形结构(DOM树),从而允许程序以一种结构化的方式操作网页的内容。

借雨醉东风的博客 3845
上一篇: 微信公众号支持markdown格式文章
下一篇: mongodb与爬虫的关系
getapi
博客等级 码龄2年 618粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值