JavaScript元素选择器
目录
- 一、getElementsByTagName
- 1.说明
- 2.用法示例
- 二、getElementsByName
- 1.说明
- 2.用法示例
- 三、getElementById
- 1.说明
- 2.用法示例
- 四、getElementsByClassName
- 1.说明
- 2.用法示例
- 五、querySelector
- 1.说明
- 2.用法示例
- 六、querySelectorAll
- 1.说明
- 2.用法示例
- 七、综合示例
一、getElementsByTagName
1.说明
getElementsByTagName 俗称标签选择器,可以根据标签名查找匹配到页面的元素对象,返回为一个数组。
2.用法示例
获取所有 p 标签的文本。
<!DOCTYPE html>
<html><head><meta charset="utf-8">
</head><body><button onclick="alertInfo();"> 获取p标签文本 </button><p>这是第一段文本aaaa</p><p>这是第二段文本bbbb</p><p>这是第三段文本cccc</p><p>这是第四段文本dddd</p>
</body>
<script>function alertInfo() {const matches = document.getElementsByTagName("p");let pText = "";for (const el of matches) {pText = pText + el.innerText + "\n";}alert("p标签文本是:\n" + pText);}
</script></html>
二、getElementsByName
1.说明
getElementsByName 俗称name选择器,可以根据name属性的值查找匹配到页面的元素对象,返回为一个数组。
2.用法示例
<!DOCTYPE html>
<html><head><meta charset="utf-8">
</head><body><button onclick="alertInfo();"> 获取name为test的文本 </button><p>这是第一段文本aaaa</p><p name="test">这是第二段文本bbbb</p><p name="test">这是第二段文本cccc</p></body>
<script>function alertInfo() {const matches = document.getElementsByName("test");let test = "";for (const el of matches) {test = test + el.innerText + "\n";}alert( test);}
</script></html>
三、getElementById
1.说明
getElementById 俗称 id 选择器 , getElementById(id)
方法查找并返回一个与页面中 id 相匹配的元素对象。
一般来说 id 在页面中应该是唯一的,因此该方法是快速访问特定元素的方法,如果页面中的两个或多个元素具有相同的 id,则此方法返回找到的第一个元素。
2.用法示例
两个 p 标签含有一样的 id ,getElementById 方法只会返回找到的第一个元素,所以点击按钮后只有第一段文字的颜色会改变。
<html lang="en">
<head><title>getElementById 示例</title>
</head>
<body><p id="para">这是第一段测试文字</p><p id="para">这是第二段测试文字</p><button onclick="changeColor('blue');">蓝色</button><button onclick="changeColor('red');">红色</button>
</body>
<script>function changeColor(newColor) {const elem = document.getElementById("para");elem.style.color = newColor;}
</script>
</html>
四、getElementsByClassName
1.说明
getElementsByClassName 俗称 class 选择器, getElementsByClassName(class) 方法查找页面上所有类名为 class 的元素对象,返回为一个数组。(方法里面要查找的多个类名之间用空格分隔。)
2.用法示例
(1)获取所有 class=“test” 的元素
document.getElementsByClassName("test");
(2)获取同时具有 ‘red’ 和 ‘test’ 类的所有元素
document.getElementsByClassName("red test");
(3)获取 id=“main” 的元素且内部具有 class=“test” 的所有元素
document.getElementById("main").getElementsByClassName("test");
(4) 获取第一个 class=“test” 的元素(如果没有匹配的元素返回undefined)
document.getElementsByClassName("test")[0];
(5)简单示例
<!DOCTYPE html>
<html>
<head><meta charset="utf-8">
</head>
<body><button onclick="changeColor();"> 改变第一段文字颜色 </button><div class="info"> 这是第一段文字</div><div class="info"> 这是第二段文字</div>
</body>
<script>function changeColor() {const infos = document.getElementsByClassName("info");infos[0].style.color = "red";}
</script>
</html>
五、querySelector
1.说明
querySelector 是元素选择器,可用于 id 和 class 选择,也就是上面 getElementById 和 getElementsByClassName 能做到的 querySelector 也能做到,并且 querySelector 还能用于其他复杂的元素选择场景,最后返回查找的元素。
2.用法示例
(1) 获取标签名叫 “select” 和 “html” 的元素
<!DOCTYPE html>
<html><head><meta charset="utf-8">
</head><body><label for="theme">选择主题:</label><select id="theme"><option value="white">白</option><option value="black">黑</option></select><h1>这是我的网页</h1></body>
<script>const select = document.querySelector("select");const html = document.querySelector("html");document.body.style.padding = "10px";function update(bgColor, textColor) {html.style.backgroundColor = bgColor;html.style.color = textColor;}select.addEventListener("change", () =>select.value === "black"? update("black", "white"): update("white", "black"),);
</script></html>
(2) 获取 DOM中第一个 id= “box” 的元素
document.querySelector("#box")
(3) 获取DOM中第一个 class= “box” 的元素
document.querySelector(".box")
(4) 选择器中逗号分割表示或者
querySelector 里可用逗号分割来表示或者的意思,下面的示例姓名输入框在年龄输入框前所以获取到的是姓名,若年龄输入框在前就会获取到年龄。
<!DOCTYPE html>
<html><head><meta charset = "utf-8">
</head><body><button onclick = "alertInfo();"> 获取姓名 </button><div> 姓名: <input name = "login" class="name" value = "张三" />年龄: <input name = "logina" class="age"value = "18" /></div>
</body>
<script>function alertInfo() {//获取class="name"的input元素,或者class="age"的input元素const el = document.querySelector("input.name,input.age");alert("姓名或年龄是:" + el.value);}
</script></html>
(5) 复杂场景的选择器使用
查找页面 div 标签里 class=“user-panel main” 的元素中 第一个 name = “login” 的 input 元素。
<!DOCTYPE html>
<html><head><meta charset = "utf-8"><style>.user-panel{margin-top: 25px;}.main{margin-left: 10px;}</style>
</head><body><button onclick = "alertInfo();"> 获取姓名 </button><div class = "user-panel main"> 姓名: <input name = "login" value = "张三" /></div><div class = "user-panel main"> 年龄: <input name = "logina" value = "18" /></div>
</body>
<script>function alertInfo() {const el = document.querySelector("div.user-panel.main input[name='login']");alert("输入的姓名是:" + el.value);}
</script></html>
六、querySelectorAll
1.说明
querySelectorAll 选择器和 querySelector 选择器相似,只不过 querySelector 返回的是匹配的一个元素,querySelectorAll 返回的是匹配的多个元素,即数组类型。
2.用法示例
(1)获取所有p标签元素
<!DOCTYPE html>
<html><head><meta charset = "utf-8">
</head><body><button onclick = "alertInfo();"> 获取姓名 </button><p>这是第一段文本aaaa</p><p>这是第二段文本bbbb</p>
</body>
<script>function alertInfo() {//获取所有p标签元素const firstP = document.querySelectorAll("p")//选取第一个p标签里的内容输出alert( firstP[0].innerText);}
</script></html>
(2)获取元素下的所有子元素
获取 id=“two” 的 div 元素,然后获取其中 class=“highlighted” 的 div 元素下是所有 p 标签。
<!DOCTYPE html>
<html><head><meta charset="utf-8"><style>.highlighted {color: aqua;}</style>
</head><body><button onclick="alertInfo();"> 获取姓名 </button><div id="first"><p>这是第一段文本aaaa</p><p>这是第二段文本bbbb</p></div><div id="two"><p>这是第三段文本cccc</p><p>这是第四段文本dddd</p><div class="highlighted"><p>这是第五段文本eeee</p><p>这是第六段文本ffff</p></div></div></body>
<script>function alertInfo() {const container = document.querySelector("div#two");const matches = container.querySelectorAll("div.highlighted > p");let highlighText = "";for (const el of matches) {highlighText=highlighText+el.innerText+"\n";}alert("高亮文本是:\n"+highlighText);}
</script></html>
七、综合示例
1.点击按钮将会弹出弹窗。
<!DOCTYPE html>
<html><head><meta charset="utf-8">
</head><body><button> 点击 </button>
</body>
<script>let btn = document.querySelector("button");btn.addEventListener("click", alterFun);function alterFun(){alert("你好!");};</script>
</html>
2.点击按钮将会在页面上新增一个百度超链接并设置一些简单的样式。
<head><meta charset="utf-8">
</head><body><button> 点击 </button>
</body>
<script>let btn = document.querySelector("button");btn.addEventListener("click", addA);function addA() {let newA = document.createElement("a");newA.href = "https://www.baidu.com";newA.innerText = "百度";newA.style.color = "red";newA.style.marginLeft = "100px";newA.target = "_blank";document.body.appendChild(newA);}
</script></html>
3.点击改变按钮将会 改变div里的两段文字并在其中增加a标签,点击还原第一段文字按钮将还原第一段文字。
<!DOCTYPE html>
<html><head><meta charset="utf-8"><style>.b2 {color: coral;}.info{color: aqua;}</style>
</head><body><button id="b1"> 改变 </button><button class="b2"> 还原第一段文字 </button><div class="info"> 这是第一段文字</div><div class="info"> 这是第二段文字</div>
</body>
<script>//获取所有id为“b1”的元素,并将它们存储在名为“elements”的变量中let btn1 = document.getElementById("b1");btn1.addEventListener("click", change);function change() {//遍历所有class为“info”的元素,修改其中的文本和字体颜色,并在其中加入一个a标签链接let elements = document.getElementsByClassName("info");for (let element of elements) {//改变标签里的文字和颜色element.innerText = "这是一段新的文字";element.style.color = "red";//添加a标签let newA = document.createElement("a");newA.href = "https://www.baidu.com";newA.innerText = "百度";newA.style.marginLeft = "100px";newA.target = "_blank";element.appendChild(newA);}}//还原第一段改变的文字和颜色let btn2 = document.getElementsByClassName("b2");btn2[0].addEventListener("click",reset);function reset() {let infoDiv = document.getElementsByClassName("info");infoDiv[0].innerText = "这是一段文字";infoDiv[0].style.color = "aqua";}</script></html>
参考:
Document: getElementById() method
Document: getElementsByName() method
Document: querySelector() method
Document: querySelectorAll() method
相关文章:
JavaScript元素选择器
目录 一、getElementsByTagName1.说明2.用法示例 二、getElementsByName1.说明2.用法示例 三、getElementById1.说明2.用法示例 四、getElementsByClassName1.说明2.用法示例 五、querySelector1.说明2.用法示例 六、querySelectorAll1.说明2.用法示例 七、综合示例 一、getEle…...

Docker安装 elasticsearch-head
目录 前言安装elasticsearch-head步骤1:准备1. 安装docker2. 搜索可以使用的镜像。3. 也可从docker hub上搜索镜像。4. 选择合适的redis镜像。 步骤2:拉取elasticsearch-head镜像拉取镜像查看已拉取的镜像 步骤3:创建容器创建容器方式1&#…...

交换排序——选择排序和冒泡排序的区别是什么?
今天重温一下算法,其实刚开始我觉得冒泡排序和选择排序是一样的,因为他们排序过程中都是通过相邻的数据比较找到最小/最大的数据,通过不断思考和学习才明白,两者还是有区别的。 冒泡排序 概念 冒泡排序(Bubble Sort)࿰…...

吉他谱:Melodies of Life - Final Fantasy Solo Guitar Collections
原始出处: Final Fantasy Solo Guitar Collections - 南泽大介改编的最终幻想9主题曲吉他谱 更多吉他谱: https://github.com/NaisuXu/Guitar_Sheet_Music_Collection...

微信小程序下拉刷新
小程序中的下拉刷新 - 掘金...
TX2 NX 修改设备树--GPIO
确认模组内使用的是哪个设备树文件 模组上电输入如下指令,查看返回值:cat /proc/device-tree/nvidia,dtsfilename找到相应的设备树文件设备树存放路径 /public_sources/Linux_for_Tegra/source/public/kernel_src/hardware/nvidia/platform/t18x/lanai/kernel-dts 确认设备树…...

.NET对象的内存布局
在.NET中,理解对象的内存布局是非常重要的,这将帮助我们更好地理解.NET的运行机制和优化代码,本文将介绍.NET中的对象内存布局。 .NET中的数据类型主要分为两类,值类型和引用类型。值类型包括了基本类型(如int、bool、double、cha…...

Hybrid App 可以从哪些技术路径实现性能优化
说到 Hybrid App(混合应用)大家都不陌生,因为这种开发模式大行其道发展的这些年取代了很多原生和 Web 应用,为什么大家对这种「Native HTML5」的开发模式额外偏爱呢? 因为一方面在一定程度上兼顾了原生应用的优质体验…...

C++入门篇7---string类
所谓的string类,其实就是我们所说的字符串,本质和c语言中的字符串数组一样,但是为了更符合C面向对象的特性,特地将它写成了一个单独的类,方便我们的使用 对其定义有兴趣的可以去看string类的文档介绍,这里…...
2308d的静态构造函数循环依赖示例
原文 //Steve: __gshared string[string] dict; shared static this() {dict ["a" : "b"]; }这里有两个论点:这不能是CRT构造器,因为它依赖于D运行时,并且认为它应该进入自己的模块是一个QoL问题,当你想要私有到类而不是私有到模块时,可为类提供它,因为语…...

Linux 目录和文件常见操作
就常见的命令: pwd pwd 显示当前的目录 目录迁移 我以如下的目录大致结构做一个简单的例子 cd 迁移到指定的路径,可以指定相对路径和绝对路径,默认相对 .指向当前路径,…/ 指向上一级的目录。 ls 列出文件及其目录 命令选…...

不基于比较的排序:基数排序
本篇只是讨论桶排序的具体实现,想了解更多算法内容可以在我的博客里搜,建议大家看看这篇排序算法总结:排序算法总结_鱼跃鹰飞的博客-CSDN博客 桶排序的原理: 代码:sort1是一个比较二逼的实现方式浪费空间,s…...

shell和反弹shell
文章目录 是什么?bash是什么?反弹shell 是什么? Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了…...

构建Docker容器监控系统(Cadvisor +Prometheus+Grafana)
Cadvisor PrometheusGrafana 1.1、Cadvisor产品简介 Cadvisor是Google开源的一款用于展示和分析容器运行状态的可视化工具。通过在主机上运行Cadvisor用户可以轻松的获取到当前主机上容器的运行统计信息,并以图表的形式向用户展示。 1.2、安装docker-ce [rootloc…...

java实现文件的下载
系统日志的获取不可能每次都登录服务器,所以在页面上能够下载系统运行的日志是必须的 如何来实现日志的下载,这样的一个功能 前端我们用到的是window.open(...)这样可以发送一个get请求到后台 后台接收到get请求之后,如何实现对文件的下载 R…...

分享Python技术下AutojsPro7云控代码
引言 有图有真相,那短视频就更是真相了。下面是三大语言的短视频。 Java源码版云控示例: Java源码版云控示例在线视频 Net源码版云控示例: Net源码版云控示例在线视频亚丁号-知识付费平台 支付后可见 扫码付费可见 Python源码版云控示例…...

【Linux】网络通信
【Linux】网络通信 文章目录 【Linux】网络通信1、网络基础1.1 计算机网络1.2 网络模型TCP & UDP1)IP地址2)端口3)TCP协议与UDP协议的比较 1.3 网络传输1.3.1 传输逻辑1.3.2 传输条件1.3.3 传输流程 1.4 地址管理 2、网络编程2.1 基本概念…...

【mysql】—— 表的约束
目录 序言 (一)空属性 (二)默认值 (三)列描述 (四)zerofill (五)主键 (六)自增长 (七)唯一键 &#…...

jeecgboot 登录成功默认其他路由
util.js...

【1572. 矩阵对角线元素的和】
来源:力扣(LeetCode) 描述: 给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1: 输入:mat [[1,2,3]…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...