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

news2024/11/26 16:37:18

目录

1、什么是DOM

1)是一个标准

2)是一个对象

2、原理及作用

3、Element元素的获取方法

4、方法使用举例

修改页面内容

1)获取DOM元素

2)修改元素内容

3)修改元素属性

4)添加和删除元素

5、应用举例


1、什么是DOM

DOM(Document Object Model,文档对象模型)是一个标准,同时也是基于这个标准在浏览器中实现的一个对象

1)是一个标准

DOM是W3C(万维网联盟)定义的访问 HTML 和 XML 文档的标准。它定义了表示和修改文档所需的对象和这些对象的行为和属性,以及这些对象之间的关系。标准分为 3 个部分:

  • 核心 DOM:任何结构化文档的标准模型,包含Document、Element​​​​​​​、Attribute​​​​​​​、Text​​​​​​​、Comment。
  • XML DOM :XML 文档的标准模型。
  • HTML DOM :HTML 文档的标准模型。
    • 在核心 DOM 基础上,对 HTML 中的每个标签都封装成了不同的对象,如<img>标签在浏览器加载到内存中时会被封装成Image对象,同时该对象也是Element对象。
    • 例如:<input type='button'>标签在浏览器加载到内存中时会被封装成Button对象,同时该对象也是Element对象。

2)是一个对象

DOM是BOM中window对象的子对象,也是访问和操作HTML文档的入口。通过document对象,可以获取到HTML文档中的元素,并对其进行操作。

它将文档解析为一个由节点(Node)和对象组成的树状结构(节点树),可以使用这些对象,动态地访问和更新HTML文档的内容、结构和样式。

  • Document:整个文档,是 DOM 树的根节点。
    • Element:文档中的元素,如 <p><div> 等。Element 对象可以包含其他 Element 对象、Text 对象和 Comment 对象作为子节点。
      • Attribute:元素的属性,如 classidsrc 等,通常附属于 Element 对象。
      • Text:元素节点或属性节点中的文本内容。
      • Comment:文档中的注释。

2、原理及作用

在浏览器端,网页加载的过程就是DOM树构建的过程:

浏览器加载:

作用:

JavaScript通过DOM对HTML进行操作:

  • 改变 HTML 元素的内容
  • 改变 HTML 元素的样式(CSS)
  • 对 HTML DOM 事件作出反应
  • 添加和删除 HTML 元素

3、Element元素的获取方法

获取:通过 Document对象获取(Document对象是通过window对象获取的):

方法名描述示例
getElementById(id)根据元素的ID获取元素对象var element = document.getElementById("myId");
getElementsByClassName(className)根据元素的类名获取元素对象集合(HTMLCollection)var elements = document.getElementsByClassName("myClass");
getElementsByTagName(tagName)根据元素的标签名获取元素对象集合(HTMLCollection)var elements = document.getElementsByTagName("p");
getElementsByName(name)根据元素的name属性获取元素对象集合(NodeList)var elements = document.getElementsByName("myName");
querySelector(selector)返回文档中匹配指定CSS选择器的第一个Element元素var element = document.querySelector(".myClass");
querySelectorAll(selector)返回文档中匹配指定CSS选择器的所有Element元素的NodeList(静态)var elements = document.querySelectorAll(".myClass");

区分:

getElementsByClassName和getElementsByTagName返回的是HTMLCollection对象,而getElementsByName和querySelectorAll返回的是NodeList对象。这两者都是类似数组的对象,可以通过索引访问元素,但它们之间有一些细微的差别,例如NodeList可以通过forEach方法迭代,而HTMLCollection则不能。此外,querySelectorAll返回的NodeList是静态的,即如果后续DOM发生变化,这个列表不会自动更新。

querySelector和querySelectorAll方法使用CSS选择器来查找元素,这使得它们非常强大和灵活,可以匹配复杂的元素模式,在Web中非常常用。

4、方法使用举例

修改页面内容

1)获取DOM元素

使用document.getElementById()、document.getElementsByClassName()、document.getElementsByTagName()、document.querySelector() 或 document.querySelectorAll()等方法获取DOM元素。

   var element = document.getElementById('myElement');

使所有的复选框呈现被选中的状态:

//1,获取所有的复选框元素对象
   var hobbys = document.getElementsByName("hobby");
//2,遍历数组,通过将复选框元素对象的checked属性值设置为true改变复选框的选中状态
   for (let i = 0; i < hobbys.length; i++) {
       hobbys[i].checked = true;
   }
2)修改元素内容

使用.innerHTML或.textContent属性修改元素的内容。​​​​​​​

element.innerHTML = '<p>新的段落内容</p>';
   element.textContent = '新的文本内容';
3)修改元素属性

使用.setAttribute()方法设置元素的属性。

 element.setAttribute('class', 'new-class');
4)添加和删除元素

使用document.createElement()创建新元素,使用.appendChild() 或.insertBefore()将其添加到DOM中,使用.removeChild()删除元素。

   var newElement = document.createElement('div');
   newElement.textContent = '新元素';
   element.appendChild(newElement);

   // 删除元素
   element.removeChild(newElement);

5、应用举例

JavaScript 代码必须位于 <script> 与 </script> 标签之间,在 HTML 文档中可以在任意地方、放置任意数量的<script>标签。

JS代码可以定义在HTML页面中,也可以定义在外部 JS文件中,然后引入到 HTML页面中。

有一个HTML文档,并在<script> </script> 标签中引入了外部JS文件 script.js:

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title>DOM 应用举例</title>  
    <style>  
        #myImage {  
            width: 200px;  
            height: 200px;  
        }  
    </style>  
</head>  
<body>  
    <h1 id="myTitle">原始标题</h1>  
    <p id="myParagraph">原始段落文本。</p>  
    <img id="myImage" src="original-image.jpg" alt="原始图片">  
    <button id="changeContent">修改内容</button>  
    <button id="changeStyle">修改样式</button>  
    <button id="changeAttribute">修改属性</button>  
  
    <script src="script.js"></script>  
</body>  
</html>

script.js文件中使用DOM操作这些元素:

document.addEventListener('DOMContentLoaded', function() {  
    // 获取页面元素  
    var title = document.getElementById('myTitle');  
    var paragraph = document.getElementById('myParagraph');  
    var image = document.getElementById('myImage');  
    var changeContentButton = document.getElementById('changeContent');  
    var changeStyleButton = document.getElementById('changeStyle');  
    var changeAttributeButton = document.getElementById('changeAttribute');  
  
    // 修改内容  
    changeContentButton.addEventListener('click', function() {  
        title.textContent = '新标题';  
        paragraph.innerHTML = '<b>新段落文本。</b>';  
    });  
  
    // 修改样式  
    changeStyleButton.addEventListener('click', function() {  
        title.style.color = 'red';  
        paragraph.style.fontSize = '20px';  
        image.style.border = '5px solid blue';  
    });  
  
    // 修改属性  
    changeAttributeButton.addEventListener('click', function() {  
        image.src = 'new-image.jpg'; // 假设有一张新的图片  
        image.alt = '新图片';  
    });  
});

在这个例子中,先通过document.getElementById方法获取了页面上的各个元素。之后为每个按钮添加了点击事件监听器。当点击不同的按钮时,会触发相应的事件处理函数,这些函数使用DOM操作来修改页面元素的内容、样式和属性。

  • 修改内容:通过修改元素的textContent和innerHTML属性来改变标题和段落文本的内容。
  • 修改样式:通过修改元素的style对象来改变标题、段落和图像的样式。
  • 修改属性:通过修改img元素的src和alt属性来更换图片及其描述。

当点击相应的按钮时,这些变化会立即反映在浏览器中的页面上。可见,DOM能够动态地操作网页内容,为用户提供交互式的体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1580019.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑硬盘分区表的两种格式:MBR 和 GPT

电脑硬盘分区表的两种格式&#xff1a;MBR 和 GPT 段子手168 2024-4-5 电脑硬盘分区表有两种格式&#xff1a;MBR 和 GPT&#xff1a; 一、MBR 分区表 1.MBR 是主引导记录 (Master Boot Record) 的英文缩写 在传统&#xff08;Legacy&#xff09;硬盘分区模式中&#xff0c…

春秋之境28512

题目说该CMS的/single.php路径下&#xff0c;id参数存在一个SQL注入漏洞。访问看一下随便点一个图片。 发现了注入点?id 那么开始查看闭合符一个 就报错了 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for th…

这些矛盾点不搞清楚,私域怎么做得起来!

最近不少人都在问&#xff0c;私域做不起来怎么办&#xff1f;有很多企业砸了不少钱&#xff0c;有些还做了好几年&#xff0c;依旧没有起色。 有些企业觉得私域做不起来的阻碍有运营方面的原因&#xff0c;比如文案写不好&#xff0c;社群不知道怎么管理&#xff1b;有团队方…

如何搭建企业级MQ消息集成平台

企业级MQ消息集成平台的重要性在于实现不同系统之间的高效、可靠、实时的消息传递和数据交换。它可以帮助企业实现系统解耦&#xff0c;提高系统的可扩展性和灵活性&#xff0c;降低系统间的依赖性。通过消息队列中间件&#xff0c;企业可以实现异步通信、削峰填谷、流量控制等…

华大单片机新建工程步骤

1.新建文件夹&#xff0c;比如00_LED 2.拷贝 hc32f460_ddl_Rev2.2.0\driver 到 00_LED 3.拷贝 hc32f460_ddl_Rev2.2.0\mcu\common 到 00_LED 4.拷贝 hc32f460_ddl_Rev2.2.0\example\ev_hc32f460_lqfp100_v2\gpio\gpio_output\source 到 00_LED 5.拷贝 hc32f460_ddl_Rev2.2.…

启明智显M系列--工业级HMI芯片选型表

本章主要介绍启明智显M系列HMI主控芯片&#xff1a; 纯国产自主&#xff0c; RISC-V 内核&#xff0c;配备强大的 2D 图形加速处理器、PNG/JPEG 解码引擎、H.264解码&#xff1b;工业宽温&#xff0c;提供全开源SDK&#xff1b;1秒快速开机启动的特性&#xff0c;极大地提高了…

初识Python(注释、编码规范、关键字...)

&#x1f947;作者简介&#xff1a;CSDN内容合伙人、新星计划第三季Python赛道Top1 &#x1f525;本文已收录于Python系列专栏&#xff1a; 零基础学Python &#x1f4ac;订阅专栏后可私信博主进入Python学习交流群&#xff0c;进群可领取Python视频教程以及Python相关电子书合…

网安小白常用五大靶场安装思路总结

网安小白常用五大靶场安装思路总结 一、安装 phpstudy二、查看服务器地址三、查看数据库的地址四、查看数据库用户的账号密码五、pikachu 靶场搭建六、DVWA 靶场搭建七、sqli-labs 靶场搭建八、uplod-labs 靶场九、xss-labs 靶场十、navicat 连接数据库 环境获取&#xff1a;获…

【Algorithms 4】算法(第4版)学习笔记 24 - 5.5 数据压缩

文章目录 前言参考目录学习笔记1&#xff1a;介绍2&#xff1a;游程编码 run-length encoding2.1&#xff1a;介绍2.2&#xff1a;Java 实现3&#xff1a;霍夫曼压缩 Huffman compression3.1&#xff1a;变长前缀码 variable-length codes3.1.1&#xff1a;介绍3.1.2&#xff1…

软文写作技巧,媒介盒子揭秘

数字化时代,想要获取用户的注意力难上加难&#xff0c;只有紧跟互联网的创作节奏&#xff0c;在软文写作中,根据用户的浏览偏好进行适当调整,让软文具有更高的审美性、易读性和启示性,才能有效地吸引当下受众的注意力。今天媒介盒子就来和大家聊聊软文写作技巧。 一、文章选题 …

OpenAI推出GPTBot网络爬虫:提升AI模型同时引发道德法律争议

文章目录 一、GPTBot 简介二、功能特点三、技术细节3.1、用户代理标识3.2、数据采集规则3.3、数据使用目的3.4、网站屏蔽方法3.5、数据过滤 四、GPTBot 的道德和法律问题五、GPTBot 的使用方法和限制六、总结 一、GPTBot 简介 OpenAI 推出的网络爬虫GPTBot旨在通过从互联网上收…

Todesstern:一款针对注入漏洞识别的强大变异器引擎

关于Todesstern Todesstern是一款功能强大的变异器引擎&#xff0c;该工具基于纯Python开发&#xff0c;该工具旨在辅助广大研究人员发现和识别未知类型的注入漏洞。 Todesstern翻译过来的意思是Death Star&#xff0c;即死亡之星&#xff0c;该工具是一个变异器引擎&#xff…

低代码平台适合谁用?业务岗能用它做什么?开发岗能用它做什么?一文讲清!

近期&#xff0c;低代码开发平台以其独特的魅力&#xff0c;迅速引发了大众的广泛关注。众多人士纷纷寻求了解各类低代码产品&#xff0c;以探究其功能与特点。 然而&#xff0c;有些人可能因一两款产品的体验不佳&#xff0c;便对整个低代码行业产生了偏见。但我要指出的是&am…

Latex写文章时,使用.bib方式添加参考文献方法,再也不用手动调整格式了

一、背景 使用Latex写文章时&#xff0c;有的模板添加参考文献是使用\begin{thebibliography}{99}和\end{thebibliography}方式&#xff0c;如下图所示&#xff0c;这样的话得手动添加参考文献。如果参考文献多的话特别麻烦&#xff0c;其中{99}指的是参考文献条目编号的最大宽…

提示词专场:从调整提示改善与LLMs的沟通,到利用LLMs优化提示效果

编者按&#xff1a;欢迎阅读“科研上新”栏目&#xff01;“科研上新”汇聚了微软亚洲研究院最新的创新成果与科研动态。在这里&#xff0c;你可以快速浏览研究院的亮点资讯&#xff0c;保持对前沿领域的敏锐嗅觉&#xff0c;同时也能找到先进实用的开源工具。 提示词的好坏决…

多个代理proxy配置——日志查看代理后的地址

一个项目接口有两个域名&#xff0c;需要配置两个代理复制一个axios封装文件&#xff0c;修改baseUrl为新的标识 ququ新接口文件引入新的request1即可 proxy: {// 新接口采用 /ququ前缀/ququ: {target: http://192.168.2.82:8888, //鑫哥 changeOrigin: true,logLevel: debug, …

SOLIDWORKS教育版使学生了解如何加快设计项目的速度

在当今信息爆炸的时代&#xff0c;设计项目的速度和效率对于工程专业的学生来说至关重要。SOLIDWORKS教育版作为一款专门为学生设计的3D CAD软件&#xff0c;不仅提供了强大的设计工具&#xff0c;更致力于帮助学生了解如何加快设计项目的速度&#xff0c;提升他们的设计能力和…

HarmonyOS 开发-应用新功能引导实现案例

介绍 本文介绍如何使用high_light_guide三方库完成应用新版本功能导航。通过高亮区域与蒙版背景的明暗度对比&#xff0c;让用户快速锁定重点功能&#xff0c;了解版本变更和业务入口。 效果图预览 使用说明 点击页面上对应按钮或空白区域进入下一个提示&#xff0c;直至提示…

CAXA电子图版2020版 下载地址及安装教程

CAXA电子图板是一款由国内软件公司CAXA开发的专业CAD&#xff08;计算机辅助设计&#xff09;软件。它主要用于绘制和编辑各种类型的二维图纸和工程图纸&#xff0c;广泛应用于建筑、机械、电气和电子等行业。 CAXA电子图板具有以下主要功能和特点&#xff1a; 二维绘图&…

大型语言模型(LLMs)面试常见问题解析

概述 这篇文章[1]是关于大型语言模型&#xff08;LLMs&#xff09;的面试问题和答案&#xff0c;旨在帮助读者准备相关职位的面试。 token&#xff1f; 在大型语言模型中&#xff0c;token 指的是什么&#xff1f; 分词&#xff08;Tokenization&#xff09;&#xff1a;可以将…