登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
签到
每天签到奖励2-10圆
导读
排行榜
TG频道
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
VIP申请
VIP网盘
网盘
联系我们
发帖说明
每日签到
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
Web前端入门第 70 问:JavaScript DOM 节点查找常用方法 ...
Web前端入门第 70 问:JavaScript DOM 节点查找常用方法
[ 复制链接 ]
厨浴
2025-9-24 15:42:31
虽然目前的开发场景基本都是使用 React/Vue/Angular 等框架,但是对于一些基础的 DOM 操作,还是需要了解学习。
曾经我们讨论过这样一个问题:Vue 这些开发框架,用它们渲染页面,真的就比不用开发框架快吗?
其实这个问题很好回答的,开发框架只是优化了项目的开发效率,对于浏览器的渲染速度,其实并没有想象中的那么快。
目前的前后端分离的开发模式,大致分为两种:一是浏览器端运行 Vue 等单页应用框架,由前端发起接口请求渲染页面从而实现前后端分离;二是在服务端运行 node.js ,由 node.js 发起接口请求渲染页面,从而实现前后端分离。这两种开发模式都绕不开的一个问题是:都要请求一次接口,http 通信都是很耗时的,相比于古老的后端渲染来说,其实已经算很慢了。
那么就有一个问题:为何 node.js 不直接写 SQL 查询数据库?嘿。。这个问题嘛就涉及到方方面面了,比如全栈开发和前端开发的价格那可不一样,会 JS 的前端和会 SQL 的前端又不一样了,前端踩过线去干后端的事这就矛盾来了...
废话太多了,咱们进入正题~~
DOM 查询
DOM 查询就是要找到 HTML 中的某个节点,方便对这个节点干一些不可描述的事~~
比如说给这个 HTML 元素加点小料,给 HTML 元素换个皮肤,让 HTML 元素动起来啥的。要干这些事的前提是要找对 HTML 元素,找错了就乱套了~~
/*
通过 ID 选择
查找页面上 id="header" 的第一个元素
比如:
<section id="header"></section>
<header id="header"></header>
只要是 ID 为 header 的元素,都能选择,但是只会找第一个
*/
const header = document.getElementById("header");
/*
通过类名选择(返回动态集合)
查找页面上 的所有元素
比如:
<button ></button>
*/
const buttons = document.getElementsByClassName("btn");
/*
通过标签名选择
与 getElementsByClassName 类似,只是选择页面上所有的 img 元素
*/
const images = document.getElementsByTagName("img");
/*
通过 CSS 选择器(静态集合)
此方法可以使用 CSS 选择器来获取页面上的元素
比如可以使用 .item:nth-child(3) 选择页面上 的第三个元素
*/
const firstButton = document.querySelector(".btn:first-child");
const allButtons = document.querySelectorAll(".btn");
复制代码
动态集合 vs 静态集合
顾名思义,动态集合就是会根据 HTML 内容变化而变化,而静态集合就是不管 HTML 怎么变,都是选择器方法执行的那一瞬间就确定了他的样子。
<ul >
<li >1</li>
<li >2</li>
<li >3</li>
<li >4</li>
<li >5</li>
</ul>
复制代码
节点关系
除了直接查找节点的方法外,还能通过获取到的节点关系属性,取到相对于的节点,比如:
parentNode 用于选择父节点。
childNodes 用于选择所有子节点,包括所有的子内容(比如:注释、空格、文本内容等)。
children 仅选择元素节点内容。
firstChild 选择第一个子内容,可以是注释、文本内容、换行符等。
lastChild 选择最后一个子内容,可以是注释、文本内容、换行符等。
firstElementChild 选择第一个元素节点。
lastElementChild 选择最后一个元素节点。
nextSibling 选择当前节点后一个内容,可以是注释、文本内容、换行符等。
previousSibling 选择当前节点前一个内容,可以是注释、文本内容、换行符等。
nextElementSibling 选择当前节点后一个元素节点。
previousElementSibling 选择当前节点前一个元素节点。
<ul >1122
<li >1</li>
<li >2</li>
321<li >3</li>123
<li >4</li>
<li >5</li>
</ul>
复制代码
写在最后
常用的 DOM 查找方法基本就这些,还有些不太常用的方法本文就不一一列举,有兴趣可以查看 MDN 文档 https://developer.mozilla.org/zh-CN/docs/Web/API/Element。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
Web
前端
门第
JavaScript
DOM
相关帖子
[前端] 配置博客园搜索功能实现新标签页打开搜索结果
2025 年前端性能优化终极指南
2025年上半年前端技术圈生态总结
拥抱新一代 Web 3D 引擎,Three.js 项目快速升级 Galacean 指南
【每日一面】任意 DOM 元素吸顶
336k 星标项目告诉你:前端 / 后端 / AI 岗该怎么学才高效
Vue3+ElementPlus前端中增加对报表模块的封装处理,
告别硬编码!5个让Web自动化脚本更稳定的定位策略
JavaScript数据网格方案AG Grid 34.2 发布
全球知名的Java Web开发平台Vaadin上线慧都网!
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
[前端] 配置博客园搜索功能实现新标签页打开搜索结果
0
606
醋辛
2025-09-30
业界
2025 年前端性能优化终极指南
0
871
荆邦
2025-09-30
业界
2025年上半年前端技术圈生态总结
0
37
边书仪
2025-09-30
业界
拥抱新一代 Web 3D 引擎,Three.js 项目快速升级 Galacean 指南
0
882
闰咄阅
2025-10-01
业界
【每日一面】任意 DOM 元素吸顶
0
527
袁勤
2025-10-01
业界
336k 星标项目告诉你:前端 / 后端 / AI 岗该怎么学才高效
0
333
姬宜欣
2025-10-02
业界
Vue3+ElementPlus前端中增加对报表模块的封装处理,
0
639
荏牌
2025-10-04
科技
告别硬编码!5个让Web自动化脚本更稳定的定位策略
0
749
跟尴
2025-10-06
代码
JavaScript数据网格方案AG Grid 34.2 发布
0
718
恙髡
2025-10-06
业界
全球知名的Java Web开发平台Vaadin上线慧都网!
0
541
谲脾
2025-10-11
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
安全
程序
签约作者
程序园优秀签约作者
发帖
厨浴
2025-9-24 15:42:31
关注
0
粉丝关注
19
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9999501
dage888
999994
富账慕
10007
4
匝抽
9986
5
孙淼淼
9992
6
柴古香
9993
7
筒濂
9982
8
凌彦慧
9991
9
崔瑜然
9984
10
慢秤
9979
查看更多