js的DOM一遍过

news2025/2/11 23:57:06

一、获取元素

1.根据id获取

document.getElementById('id');

2.根据标签名获取

  • 使用 getElementsByTagName() 方法可以返回带有指定标签名的对象的集合。
document.getElementsByTagName('标签名');
  • 获取某个元素(父元素)内部所有指定标签名的子元素。
element.getElementsByTagName('标签名');

 3.根据类名返回元素对象集合

document.getElementsByClassName('类名');

 4.获取特殊元素(body,html)

doucumnet.body  // 返回body元素对象
document.documentElement  // 返回html元素对象

5.选择器获取

//根据指定选择器返回第一个元素对象
document.querySelector('选择器');

//根据指定选择器返回
document.querySelectorAll('选择器');

二、事件

1.常见的鼠标事件

<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>事件三要素</title>
	</head>
	<body>
		<button id="btn">点击一下</button>
		<script>
			// 点击一个按钮,弹出对话框
			// 1.事件是有三部分:事件源、事件类型、事件处理程序
			//(1)事件源:事件被触发的对象。谁--按钮
			var btn = document.getElementById("btn");
			//(2)事件类型:如何触发,什么事件,比如鼠标点击还是鼠标经过,还是键盘按下
			//(3)事件处理程序,通过一个函数赋值的方式完成
			btn.onclick = function () {
				alert("点击了按钮");
			};
		</script>
	</body>
</html>

三、DOM操作

①修改元素内容

innerText innerHTML 改变元素内容

element.innerHTML  = '新的内容';

②修改元素样式

element.style.color  = 'red';
element.style.fontSize  = '16px';

③修改元素属性

element.setAttribute('id',  'newId');
element.setAttribute('class',  'newClass');

④创建新元素

var newElement = document.createElement('div'); 
newElement.innerHTML  = '新元素的内容';
document.body.appendChild(newElement); //将新元素添加入body子节点

⑤删除元素

document.body.removeChild(newElement); 

⑥绑定事件监听

<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>Document</title>
	</head>
	<body>
		<button>按钮</button>
		<input type="text" value="输入内容" />
		<script>
			// 1.获取元素
			var btn = document.querySelector("button");
			var input = document.querySelector("input");
			// 2.注册事件 处理程序
			btn.onclick = function () {
				// 表单里面的值,文字内容是通过 value来修改的
				input.value = "被点击了";
			};
		</script>
	</body>
</html>

⑦样式属性操作 

<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>Document</title>
		<style>
			div {
				width: 200px;
				height: 200px;
				background-color: pink;
			}
		</style>
	</head>
	<body>
		<div></div>
		<script>
			var div = document.querySelector("div");
			div.onclick = function () {
				// div.style.backgroundColor = "green";
				// div.style里面的属性,采用驼峰命名法
				this.style.backgroundColor = "purple";
				this.style.width = "250px";
			};
		</script>
	</body>
</html>
<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>Document</title>
		<style>
			div {
				width: 200px;
				height: 200px;
				background-color: pink;
			}
			.change {
				background-color: purple;
				color: #fff;
				font-size: 25px;
				margin-top: 100px;
			}
		</style>
	</head>
	<body>
		<div>文本</div>
		<script>
			var div = document.querySelector("div");
			div.onclick = function () {
				// this.style.backgroundColor = "purple";
				// this.style.color = "#fff";
				// this.style.fontSize = "25px";
				// this.style.marginTop = "100px";
				// 让我们当前元素的类名改为了 change
				this.className = "change";
			};
		</script>
	</body>
</html>

⑧排他思想

<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>Document</title>
	</head>
	<body>
		<button>按钮1</button>
		<button>按钮2</button>
		<button>按钮3</button>
		<button>按钮4</button>
		<button>按钮5</button>
		<script>
			// 1.获取所有按钮元素
			var btns = document.getElementsByTagName("button");
			for (var i = 0; i < btns.length; i++) {
				btns[i].onclick = function () {
					// (1)我们先把所有的按钮背景颜色去掉
					for (var i = 0; i < btns.length; i++) {
						btns[i].style.backgroundColor = "";
					}

					// (2)然后才让当前的元素背景颜色为 pink
					this.style.backgroundColor = "pink";
				};
			}
		</script>
	</body>
</html>

⑨自定义属性操作

获取属性值

(1)element.属性 获取内置属性值(元素本身自带的属性)

(2)element.getAttribute(‘属性’); 主要获得自定义的属性 (标准) 我们程序员自定义的属性

移除属性

(1)element.removeAttribute(‘属性’);

四、节点操作

 ①父子节点的获取

  • parentNode 属性可返回某节点的父节点,注意是最近的一个父节点
  • 如果指定的节点没有父节点则返回 null
<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>Document</title>
	</head>
	<body>
		<div>我是div</div>
		<span>我是span</span>
		<ul>
			<li>我是li</li>
			<li>我是li</li>
			<li>我是li</li>
			<li>我是li</li>
		</ul>
		<div class="demo">
			<div class="box">
				<div class="erweima">x</div>
			</div>
		</div>

		<script>
			// 1. 父节点 parentNode
			var erweima = document.querySelector(".erweima");
			// var box = document.querySelector('.box');
			// 得到的是离元素最近的父级节点,如果找不到父节点就返回为 null
			console.log(erweima.parentNode);
		</script>
	</body>
</html>

子节点:

1. parentNode.childNode   //标准
2. parentNode.children	  //非标准

parentNode.childNodes 返回包含指定节点的子节点的集合,该集合为即时更新的集合。
注意:返回值里面包含了所有的子节点,包括元素节点,文本节点等。
如果只想要获得里面的元素节点,则需要专门处理。 所以我们一般不提倡使用childNodes

parentNode.children 是一个只读属性,返回所有的子元素节点。它只返回子元素节点,其余节点不返回 (这个是我们重点掌握的)。
虽然children 是一个非标准,但是得到了各个浏览器的支持,因此我们可以放心使用。

案例

<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>Document</title>
	</head>
	<body>
		<div>我是div</div>
		<span>我是span</span>
		<ul>
			<li>我是li</li>
			<li>我是li</li>
			<li>我是li</li>
			<li>我是li</li>
		</ul>
		<ol>
			<li>我是li</li>
			<li>我是li</li>
			<li>我是li</li>
			<li>我是li</li>
		</ol>
		<div class="demo">
			<div class="box">
				<div class="erweima">x</div>
			</div>
		</div>

		<script>
			// DOM 提供的方法 (API) 获取
			var ul = document.querySelector("ul");
			// var lis = ul.querySelect('li');
			// 1.子节点 childNodes 所有的子节点,包含:元素节点,文本节点等等
			console.log(ul.childNodes);
			// 1.children 获取所有的子节点元素 也是我们实际开发常用的
			console.log(ul.children);
		</script>
	</body>
</html>
3. parentNode.firstChild
4. parentNode.lastChild
5. parentNode.firstElementChild
6. parentNode.lastElementChild

firstChild 返回第一个子节点,找不到则返回null。同样,也是包含所有的节点。
lastChild 返回最后一个子节点,找不到则返回null。同样,也是包含所有的节点。
firstElementChild 返回第一个子元素节点,找不到则返回null。
lastElementChild 返回最后一个子元素节点,找不到则返回null。


注意:firstElementChild和lastElementChild,这两个方法有兼容性问题,IE9 以上才支持。
 

剩下的看原文吧
原文链接:https://blog.csdn.net/m0_48964052/article/details/125962081

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

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

相关文章

Machine Learning:Introduction

文章目录 Machine LearningTrainingStep 1.Contract Function with Unknown ParametersStep 2.Define Loss from Training DataStep 3.Optimization Linear ModelPiecewise Linear CurveBeyond Piecewise Liner?FunctionLossOptimization Model Deformation Machine Learning …

Excel 笔记

实际问题记录 VBA脚本实现特殊的行转列 已知&#xff1a;位于同一Excel工作簿文件中的两个工作表&#xff1a;Sheet1、Sheet2。 问题&#xff1a;现要将Sheet2中的每一行&#xff0c;按Sheet1中的样子进行转置&#xff1a; Sheet2中每一行的黄色单元格&#xff0c;为列头。…

基于 GEE 利用插值方法填补缺失影像

目录 1 完整代码 2 运行结果 利用GEE合成NDVI时&#xff0c;如果研究区较大&#xff0c;一个月的影像覆盖不了整个研究区&#xff0c;就会有缺失的地方&#xff0c;还有就是去云之后&#xff0c;有云量的地区变成空值。 所以今天来用一种插值的方法来填补缺失的影像&#xf…

如何在浏览器中搭建开源Web操作系统Puter的本地与远程环境

文章目录 前言1.关于Puter2.本地部署Puter3.Puter简单使用4. 安装内网穿透5.配置puter公网地址6. 配置固定公网地址 前言 嘿&#xff0c;小伙伴们&#xff01;是不是每次开机都要像打地鼠一样不停地点击各种网盘和应用程序的登录按钮&#xff0c;感觉超级麻烦&#xff1f;更让…

使用EVE-NG-锐捷实现单臂路由

一、基础知识 1.三层vlan vlan在三层环境中通常用作网关vlan配上ip网关内部接口ip 2.vlan创建步骤 创建vlan将接口划分到不同的vlan给vlan配置ip地址 二、项目案例 1、项目拓扑 2、项目实现 PC1配置 配置PC1IP地址为192.168.1.10/24网关地址为192.168.1.1 ip 192.168.1…

二、通义灵码插件保姆级教学-IDEA(使用篇)

一、IntelliJ IDEA 中使用指南 1.1、代码解释 选择需要解释的代码 —> 右键 —> 通义灵码 —> 解释代码 解释代码很详细&#xff0c;感觉很强大有木有&#xff0c;关键还会生成流程图&#xff0c;对程序员理解业务非常有帮忙&#xff0c;基本能做到哪里不懂点哪里。…

HAL库外设宝典:基于CubeMX的STM32开发手册(持续更新)

目录 前言 GPIO&#xff08;通用输入输出引脚&#xff09; 推挽输出模式 浮空输入和上拉输入模式 GPIO其他模式以及内部电路原理 输出驱动器 输入驱动器 中断 外部中断&#xff08;EXTI&#xff09; 深入中断&#xff08;内部机制及原理&#xff09; 外部中断/事件控…

HarmonyOS 5.0应用开发——ContentSlot的使用

【高心星出品】 文章目录 ContentSlot的使用使用方法案例运行结果 完整代码 ContentSlot的使用 用于渲染并管理Native层使用C-API创建的组件同时也支持ArkTS创建的NodeContent对象。 支持混合模式开发&#xff0c;当容器是ArkTS组件&#xff0c;子组件在Native侧创建时&#…

[AI]Mac本地部署Deepseek R1模型 — — 保姆级教程

[AI]Mac本地部署DeepSeek R1模型 — — 保姆级教程 DeepSeek R1是中国AI初创公司深度求索&#xff08;DeepSeek&#xff09;推出大模型DeepSeek-R1。 作为一款开源模型&#xff0c;R1在数学、代码、自然语言推理等任务上的性能能够比肩OpenAI o1模型正式版&#xff0c;并采用MI…

群晖NAS如何通过WebDAV和内网穿透实现Joplin笔记远程同步

文章目录 前言1. 检查群晖Webdav 服务2. 本地局域网IP同步测试3. 群晖安装Cpolar工具4. 创建Webdav公网地址5. Joplin连接WebDav6. 固定Webdav公网地址7. 公网环境连接测试 前言 在数字化浪潮的推动下&#xff0c;笔记应用已成为我们记录生活、整理思绪的重要工具。Joplin&…

CSS3+动画

浏览器内核以及其前缀 css标准中各个属性都要经历从草案到推荐的过程&#xff0c;css3中的属性进展都不一样&#xff0c;浏览器厂商在标准尚未明确的情况下提前支持会有风险&#xff0c;浏览器厂商对新属性的支持情况也不同&#xff0c;所有会加厂商前缀加以区分。如果某个属性…

C++ list介绍

文章目录 1. list简介2. list的实现框架2.1 链表结点2.2 链表迭代器2.3 链表 3. list迭代器及反向迭代器设计3.1 list迭代器3.2 list反向迭代器3.3 list迭代器失效 4. list与vector比较 1. list简介 list&#xff0c;即链表。 链表的种类有很多&#xff0c;是否带头结点&#…

Java - 在Linux系统上使用OpenCV和Tesseract

系统环境 确保Linux系统安装了cmake构建工具&#xff0c;以及java和ant&#xff08;这两者如果没有&#xff0c;可能会影响到后面编译opencv生成.so和.jar文件&#xff09;。 sudo apt-get update sudo apt-get install build-essential sudo apt install cmake build-essen…

自有服务与软件包

—— 小 峰 编 程 目录 ​编辑 一、自有服务概述 二、systemctl管理服务命令 1、显示服务 2、查看启动和停止服务 3、服务持久化 三、常用自有服务&#xff08;ntp,firewalld,crond) 1、ntp时间同步服务 1&#xff09;NTP同步服务器原理 2&#xff09;到哪里去找NPT服务…

Python 鼠标轨迹 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序&#xff0c;它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言&#xff0c;原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势&#xff1a; 模拟…

chrome-mojo C++ Bindings API

概述 Mojo C 绑定 API 利用C 系统 API提供一组更自然的原语&#xff0c;用于通过 Mojo 消息管道进行通信。结合从Mojom IDL 和绑定生成器生成的代码&#xff0c;用户可以轻松地跨任意进程内和进程间边界连接接口客户端和实现。 本文档通过示例代码片段提供了绑定 API 用法的详…

java: framework from BLL、DAL、IDAL、MODEL、Factory using oracle

oracel 21c sql: -- 创建 School 表 CREATE TABLE School (SchoolId CHAR(5) NOT NULL,SchoolName NVARCHAR2(500) NOT NULL,SchoolTelNo VARCHAR2(8) NULL,PRIMARY KEY (SchoolId) );CREATE OR REPLACE PROCEDURE addschool(p_school_id IN CHAR,p_school_name IN NVARCHAR2,p…

Ubuntu22.04部署deepseek大模型

Ollama 官方版 Ollama 官方版: https://ollama.com/ 若你的显卡是在Linux上面 可以使用如下命令安装 curl -fsSL https://ollama.com/install.sh | shollama命令查看 rootheyu-virtual-machine:~# ollama -h Large language model runnerUsage:ollama [flags]ollama [comman…

Redis数据库(二):Redis 常用的五种数据结构

Redis 能够做到高性能的原因主要有两个&#xff0c;一是它本身是内存型数据库&#xff0c;二是采用了多种适用于不同场景的底层数据结构。 Redis 常用的数据结构支持字符串、列表、哈希表、集合和有序集合。实现这些数据结构的底层数据结构有 6 种&#xff0c;分别是简单动态字…

网络安全溯源 思路 网络安全原理

网络安全背景 网络就是实现不同主机之间的通讯。网络出现之初利用TCP/IP协议簇的相关协议概念&#xff0c;已经满足了互连两台主机之间可以进行通讯的目的&#xff0c;虽然看似简简单单几句话&#xff0c;就描述了网络概念与网络出现的目的&#xff0c;但是为了真正实现两台主机…