JavaScript—DomApi

news2025/1/10 2:00:42

DomApi

  • 🔎Dom
  • 🔎Dom树
  • 🔎Dom—querySelector(获取元素)
  • 🔎事件
    • 事件的三要素
  • 🔎操作元素
    • 获取 / 修改元素内容
    • 获取 / 修改元素属性
    • 获取 / 修改表单元素属性
    • 获取 / 修改样式属性
      • 修改内联样式
      • 修改元素应用的 CSS 类名
  • 🔎操作节点
    • 新增节点
    • 删除节点
  • 🔎总结

DomApi 有很多
本文列举一些较为常见的 Api

🔎Dom


Dom(Document Object Model)—文档对象模型

通过 Dom(文档对象模型), 可以把 html 上的每个标签映射到 JavaScript 中的一个对应对象

  • 标签上显示的内容可通过 JavaScript 对象获取
  • JavaScript 对象修改对应属性时会影响标签的展示

🔎Dom树


在这里插入图片描述

图片来自网络

  • 文档, 一个页面就是一个文档, 使用 document 表示
  • 元素, 页面中的所有标签称为元素, 使用 element 表示
  • 节点, 页面中的所有内容称为节点(标签, 注释, 文本, 属性…), 使用 node 表示

🔎Dom—querySelector(获取元素)


获取单个元素querySelector(CSS选择器)
获取全部元素querySelectorAll(CSS选择器)

较为常见的CSS选择器

  1. 类选择器
  2. Id 选择器
  3. 后代选择器
  4. 标签选择器

举个栗子🌰

<body>
	<div class="class">abc</div>
	<div id="id">def</div>
	<h3>
		<span>
			<input type="text">
		</span>
	</h3>
	
	<script>
		let elem1 = document.querySelector('.class'); // 类选择器
		let elem2 = document.querySelector('#id'); // Id 选择器
		let elem3 = document.querySelector('h3>span>input'); // 后代选择器
		let elem4 = document.querySelector('input'); // 标签选择器
	</script>	
</body>

注意🍂

当程序中出现多个相同 Id 时(其他同理), 使用querySelector(Id 选择器)会选择第一个出现的 Id

例如

<div id="id">aaa</div>
<div id="id">bbb</div>
<div id="id">ccc</div>

使用querySelector('#id')选择的内容为aaa
想要全部选中可以使用querySelectorAll('#id')

🔎事件


事件
针对用户操作进行的一些响应

事件的三要素


  1. 事件源: 哪个元素产生的事件
  2. 事件类型: 单击, 双击, 移动, 按键盘…
  3. 事件处理程序: 事件发生之后, 要执行哪个代码(要执行的代码是提前设定好的)

🔎操作元素


获取 / 修改元素内容


利用innerHTML获取 / 修改元素内容

innerHTML → 得到标签中的内容(开始标签和结束标签中间夹杂着的那部分)

举个栗子🌰

<p>hello</p>
利用innerHTML获取到的即为 hello

针对如下代码

利用innerHTML获取 / 修改元素内容

<body>

	<div class="box">abc</div>
	
	<script>
		
		let div = document.querySelector('.box');
		div.onclick = function() {
			// 获取元素内容
			console.log(div.innerHTML);
			// 修改元素内容
			div.innerHTML += 'a';
		}
		
	</script>
	
</body>

获取 / 修改元素属性


HTML 标签的属性, 会映射到 JavaScript 对象中

通过console.dir()查看元素的属性

以图片为例

其中包含较多的属性

在这里插入图片描述

获取元素属性 → 获取图片的高度, 宽度, 标题…
修改元素属性 → 点击该图片时切换到预设的另一张图片

完整代码🍂

<body>

	<img src="4.png" title="金鱼姬">
	
	<script>
		
		let img = document.querySelector('img');
		// console.dir(img);
		img.onclick = function() {
			console.log(img.width);
			console.log(img.height);
			console.log(img.title);
			img.src="5.png";
		}
		
	</script>
	
</body>

获取 / 修改表单元素属性


表单元素(input, textarea, select…)有一些普通标签没有的属性

例如

  • value, input 的值
  • checked, 复选框中使用(表示默认被选中的状态)
  • type, 种类(包括 button, checkbox, text, file…)

获取 / 修改表单元素属性🍭

以 value 为例
在输入框输入一个数字后, 点击按钮
打印该数字(获取表单元素属性)
修改当前数字 + 1(修改表单元素属性)

<body>

	<input type="text">
	<button>按钮</button>
	
	<script>
			
		let input = document.querySelector('input');
		button.onclick = function() {
			
			input.value = parseInt(input.value) + 1;
			console.log(input.value);
			
		}
		
	</script>

</body>

在这里插入图片描述

在这里插入图片描述

获取 / 修改样式属性


获取 / 修改样式属性分为 2 种

  1. 修改内联样式(修改 style 属性的值)
  2. 修改元素应用的 CSS 类名

修改内联样式


举个栗子🌰

一段文字的初始大小为 20px, 点击该文字其大小增加 10px

<body>
		
	<div style="font-size: 20px;">这是一个div, 点击之后字体放大</div>
	
	<script>
	
		let div = document.querySelector('div');
		div.onclick = function() {
			let fontSize = div.style.fontSize;
			fontSize = parseInt(fontSize) + 10;
			div.style.fontSize = fontSize + 'px';
		}
		
	</script>
	
</body>

修改元素应用的 CSS 类名


举个栗子🌰

设计两种 CSS 样式, 分别是日间模式与夜间模式

初始化一个 div, 默认模式为日间模式, 点击时在两种模式之间切换

<body>

	<style>
		
		.light {
			/* 日间模式 */
			color: antiquewhite;
			background-color: black;
		}
		
		.dark {
			/* 夜间模式 */
			color: black;
			background-color: antiquewhite;
			
		}
		
	</style>
	
	<div class="light" style="font-size: 20px; height: 300px;">这是一个div</div>
	
	<script>
	
		let div = document.querySelector('div');
		div.onclick = function() {
			div.className = div.className == "light" ? "dark" : "light";
		}

	</script>
	
</body>

在这里插入图片描述
在这里插入图片描述

🔎操作节点


新增节点
创建元素节点 → createElement() / 将新创建的节点挂到 Dom 树 → appendChild()

删除节点
从 Dom 树移除新创建的节点 → removeChild()

新增节点


新增节点分为 2 个步骤

  1. 创建元素节点
  2. 将新创建的节点挂到 Dom 树

举个栗子🌰

创建一个 div
创建元素节点为 input, 在 input 中输入 hello_bibubibu
将新创建的节点挂到 div

<body>
		
	<div class="one">
		这是一个 div
	</div>
	
	<script>
		
		let input = document.createElement('input');
		// 输入框默认显示 hello_bibubibu 
		input.value = 'hello_bibubibu';
		let div = document.querySelector('.one');
		div.appendChild(input);
		
	</script>
	
</body>

在这里插入图片描述

删除节点


针对上述代码添加div.removeChild(input);即可

在这里插入图片描述

🔎总结


  1. 选中元素 → querySelector() / querySelectorAll()
  2. 事件(鼠标单击) → onclick
  3. 修改元素内容 → innerHTML
  4. 修改元素属性 → 利用console.dir()查看元素属性
  5. 修改表单元素属性 → value, checked, type...
  6. 修改样式属性 → 内联样式 / 元素应用的 CSS 类名
  7. 创建元素 → createElement()
  8. 添加节点(将元素挂到 Dom 树) → appendChild()
  9. 删除节点(从 Dom 树移除元素) → removeChild()

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

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

相关文章

Scrapy框架--settings配置 (详解)

目录 settings配置 官网-参考配置 配置文档 Scrapy默认BASE设置 settings配置 Scrapy框架中的配置文件&#xff08;settings.py&#xff09;是用来管理爬虫行为和功能的关键部分。它是一个Python模块&#xff0c;提供了各种配置选项&#xff0c;可以自定义和控制爬虫的行为。…

02【存储引擎、索引】

文章目录 一、存储引擎1.1 查看存储引擎1.2 修改默认存储引擎1.3 常见存储引擎1.4 存储引擎的特点1.4.1 InnoDB 存储引擎1.4.2 MyISAM 存储引擎1.4.2.1 MyISAM与InnoDB对比1.4.2.2 批量插入性能测试1.4.2.3 MyISAM压缩表 1.4.3 Merge 存储引擎1.4.4 Memory 存储引擎 二、索引2.…

kafka入门,发送原理和生产者重要参数(三)

发送原理 在消息发送过程中&#xff0c;涉及两个线程&#xff0c;main线程和Sender线程。在main线程中创建了一个双端队列&#xff0c;RecordAccumulator,Sender过程不断从RecordAccumulator中拉取消息发送到Kafka Broker batch size:只有数据累计到batch.size之后&#xff0…

C++ 哈希思想应用 位图 布隆过滤器 海量数据处理

文章目录 问题引入位图&#xff08;附C模拟实现源码&#xff09;布隆过滤器&#xff08;附C模拟实现源码&#xff09; 问题引入 问题&#xff1a; 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个数中。 问题…

连续6年霸榜全球工作站市场,Dell Precision凭什么?

前段时间&#xff0c;IDC发布2022 Q4工作站市场报告&#xff0c;戴尔拿下2022年工作站市场出货量和行业占比的双料冠军&#xff0c;且成为全年唯一一家份额增长的供应商。 至此&#xff0c;Dell Precision已连续6年蝉联世界第一。 根据IDC发布的2022年第四季度全球工作站追踪…

第四十章 开发Productions - ObjectScript Productions - 定义企业消息库

文章目录 第四十章 开发Productions - ObjectScript Productions - 定义企业消息库概述定义 Message Bank服务器添加Message Bank Helper类关于Message Bank的注意事项 第四十章 开发Productions - ObjectScript Productions - 定义企业消息库 概述 Enterprise Message Bank …

初识运营,明晰运营的学习路径

关于运营的思考 问题1&#xff1a;运营是什么&#xff1f;运营到底是做什么工作的&#xff1f; 如题&#xff1a;到底什么是运营&#xff1f;为什么我们所接触到的很多运营都不太一样&#xff0c;有的运营就是每天追寻互联网热点&#xff0c;加班加点的写文案&#xff1b;有的…

考研算法32天:桶排 【桶排序】

算法介绍 桶排 举个例子&#xff0c;一个数组中的数是&#xff1a;4 1 2 3 5&#xff0c; 然后桶排的顺序是&#xff1a;将每个数应该在的下标算出来&#xff0c;咋算呢&#xff1f;这我们就得考虑两种情况&#xff1a;假设我们设现在这个需要找到自己在数组里位置的数是x。…

自学黑客(网络安全),一般人我劝你还是算了吧(自学网络安全学习路线--第七章 数据库安全)【建议收藏】

文章目录 一、自学网络安全学习的误区和陷阱二、学习网络安全的一些前期准备三、自学网络安全学习路线一、数据库安全概述1、数据库的安全特性 二、数据库中的数据保护2、数据库加密3、数据库完整性保护 三、数据备份与恢复1、数据库备份2、数据库恢复 四、SQL Servre数据库安全…

vue写法——使用js高阶函数实现多条件搜索功能

&#x1f642;博主&#xff1a;爱学习的Akali king &#x1f642;本文核心&#xff1a;vue写法——使用js高阶函数实现多条件搜索功能 目录 类比一下react写法用vue写法来实现&#xff0c;思路步骤&#xff1a;第一步&#xff1a;准备数据第二步&#xff1a;根据数据结构渲染Do…

ModaHub魔搭社区:向量数据库Milvus性能调优教程(一)

目录 性能调优 插入性能调优 查询性能调优 硬件环境 系统参数 性能调优 插入性能调优 “数据插入”到“数据写入磁盘”的基本流程请参考 存储操作。 如果数据量小于单次插入上限&#xff08;256 MB&#xff09;&#xff0c;批量插入比单条插入要高效得多。 系统配置中…

Boom 3D For Win如何进行安装、激活和换机?

Boom系列应用软件又迎来了一位新的“猛将”— 隆重升级的Boom 3D&#xff08;Windows系统&#xff09;&#xff01;这款主打3D环绕音效的软件&#xff0c;既能使用在Windows设备上&#xff0c;也能使用在MAC设备上。Boom 3D既可以让你体验到高质量的3D环绕音效&#xff0c;也能…

我们来谈谈websocket

"你一无所有地闯荡。" 一、初始WebSocket (1) 什么是websocket WebSocket是一种在单个TCP连接上进行全双工通信的协议。 WebSocket使得客户端和服务器之间的数据交换变得更加简单&#xff0c;允许服务端主动向客户端推送数据。在WebSocket API中&#xff0c;浏览器和…

自学黑客(网络安全),一般人我劝你还是算了吧(自学网络安全学习路线--第九章 Internet安全协议)【建议收藏】

文章目录 一、自学网络安全学习的误区和陷阱二、学习网络安全的一些前期准备三、自学网络安全学习路线一、安全协议概述二、IPSec协议1、概述2、IP封装过程3、IPSec不安全性4、IPSec的功能5、IPSec体系结构6、IPSec的AH7、IPSec的AH8、IPSec的ESP9、IPSec的ESP10、ISAKMP11、IK…

分析油烟污染的危害及其控制防治对策 安科瑞 许敏

摘 要&#xff1a;介绍了烹饪油烟的组成及危害&#xff0c;着重概述了家庭烹饪油烟污染特点以及净化技术的研究进展&#xff0c;对各技术特点及存在的问题进行了分析&#xff0c;初步探讨了新近发展的静电催化耦合技术在烹饪排放污染控制中的应用&#xff0c;分析了现行的吸油烟…

全志V3S嵌入式驱动开发(spi-nand image制作和烧入)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 上一篇文章,我们说到了spi-nor image的制作和输入。相比较spi-nor,spi-nand虽然在稳定性上面差一点,但是价格上面有很大的优势。举例来说,一般32M的spi-nor大约在6-7元左右,但…

软件外包开发在线监控工具

软件系统上线后需要实时监控&#xff0c;这样在系统出现问题后可以及时发现问题并解决问题。今天和大家分享常见的软件系统监控工具&#xff0c;这些工具功能强大且成熟稳定&#xff0c;熟练的应用可以帮助运维人员解决很多项目中的实际问题。北京木奇移动技术有限公司&#xf…

ubuntu dlib 编译 人脸检测

编译&#xff1a; ubuntu14.04 dlib19.2【 C 】Face Landmark Detection_FR-0912的博客-CSDN博客 也可这样 cmake .. -DUSE_AVX_INSTRUCTIONS1 cmake --build .测试代码 linux安装dlib&#xff0c;关键点检测_dlib linux_Peanut_范的博客-CSDN博客 CmakeList.txt cmake_mini…

QtCreator工具下载链接

QT工具下载链接&#xff1a; 离线安装的安装包下载链接&#xff1a; Index of /archive/qthttp://download.qt.io/archive/qt/ 在线安装的安装包下载链接&#xff1a; Index of /archive/online_installershttps://download.qt.io/archive/online_installers/

第八十六天学习记录:Linux基础:基础指令Ⅰ

Linux系统的目录结构 Linux的目录结构是一个树型结构 Linux没有盘符的概念&#xff0c;只有一个根目录/&#xff0c;所有文件都在根目录下面 Linux系统的路径表达形式 在Linux系统中&#xff0c;路径之间的层级关系使用&#xff1a;/来表示。&#xff08;windows系统中用\&a…