〖大前端 - 基础入门三大核心之JS篇㊳〗- DOM访问元素节点

  • 说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费如需要项目实战或者是体系化资源,文末名片加V!
  • 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作,目前在公司担任研发部门CTO。
  • 荣誉:2022年度博客之星Top4、2023年度超级个体得主、谷歌与亚马逊开发者大会特约speaker全栈领域优质创作者

  • 🏆 白宝书系列
    • 🏅 启示录 - 攻城狮的自我修养
    • 🏅 Python全栈白宝书
    • 🏅 ChatGPT实践指南白宝书
    • 🏅 产品思维训练白宝书
    • 🏅 全域运营实战白宝书
    • 🏅 大前端全栈架构白宝书


文章目录

  • ⭐ 访问元素节点
    • 🌟 认识document对象
    • 🌟 访问元素节点的常用方法
      • ✨ getElementById()
      • ✨ 延迟运行
      • ✨ getElementsByTagName()
      • ✨ getElementsByClassName()
      • ✨ querySelector()
      • ✨ querySelectorAll()

⭐ 访问元素节点

所谓“访问”元素节点,就是指“得到”、“获取”页面上的元素节点

对节点进行操作,第一步就是要得到它

访问元素节点主要依靠document对象

🌟 认识document对象

document对象是DOM中最重要的东西,几乎所有DOM的功能都封装在了document对象中

document对象也表示整个HTML文档,它是DOM节点树的

document对象的nodeType属性值是9

image-20230403160713431

image-20230403160810420

🌟 访问元素节点的常用方法

方法功能兼容性
document.getElementById()通过id得到元素IE6
document.getElementsByTagName()通过标签名得到元素数组IE6
document.getElementsByClassName()通过类名得到元素数组IE9
document.querySelector()通过选择器得到元素IE8部分兼容,IE9完全兼容
document.querySelectorAll()通过选择器得到元素数组IE8部分兼容,IE9完全兼容

✨ getElementById()

getElementById()方法,通过id得到元素节点

示例代码:

<body>
    <div id="box"></div>
    <p id="para"></p>

    <script>
        //访问/获取元素节点
        var oBox = document.getElementById('box');  //注意括号里的大小写字母也要匹配
        var oPara = document.getElementById('para');
    </script>
</body>

注意事项:

  • 如果页面上有相同的元素,则只能得到第一个(所以页面上不要出现相同id的元素)
  • 不管元素藏的有多深,都可以找到

✨ 延迟运行

在测试DOM代码时,通常JS代码一定要写到HTML节点的后面,否则JS无法找到相应HTML节点

但是,也可以使用window.onload = function(){}事件,使页面加载完毕后,再执行指定的代码(原理就是给window窗口对象添加一个onload事件,onload表示加载完,即给窗口添加了一个全都加载完的事件监听,等页面加载完后,再执行function里面的方法)

示例代码:

<body>
    <!--下方的代码中,script标签放在了最上方-->
    <script>
        //给window对象添加onload事件监听
        window.onload = function () {
            //访问/获取元素节点
            var oBox = document.getElementById('box');
            var oPara = document.getElementById('para');
            console.log(oBox);
            console.log(oPara);
        }
    </script>
    <div id="box"></div>
    <p id="para"></p>
</body>
</html>

image-20230403192109560

很多公司会习惯将script标签放到head里面,这样写也需要加上“延时运行”来保证js代码在页面加载完毕后运行。

✨ getElementsByTagName()

getElementsByTagName()方法,通过标签名得到节点数组

数组方便遍历,从而可以批量操控元素节点

即使页面上只有一个指定标签名的节点,也将得到长度为1的数组

任何一个节点元素也可以调用getElementsByTagName()方法,从而得到其内部的某种类的元素节点

示例代码:

<body>
    <div class="box1">
        <p>我是段落</p>
        <p>我是段落</p>
        <p>我是段落</p>
        <p>我是段落</p>
    </div>
    <div class="box2">
        <p>我是段落</p>
        <p>我是段落</p>
        <p>我是段落</p>
        <p>我是段落</p>
    </div>
    <script>
        var oPs = document.getElementsByTagName('p');  //得到页面中的所有p标签
        console.log(oPs);
    </script>
</body>

image-20230405215132114

如果想要得到指定盒子内的p标签,可以这样写:

<body>
	<div id="box1">
        <p>我是段落</p>
        <p>我是段落</p>
        <p>我是段落</p>
        <p>我是段落</p>
    </div>
    <div id="box2">
        <p>我是段落2</p>
        <p>我是段落2</p>
        <p>我是段落2</p>
        <p>我是段落2</p>
    </div>
    <script>
        //先得到box2
        var box2 = document.getElementById('box2');
        //再得到box2中的p标签
        var ps_inbox2 = box2.getElementsByTagName('p');
        console.log(ps_inbox2);
    </script>
</body>

image-20230405215511053

✨ getElementsByClassName()

getElementsByClassName()方法,通过类名得到节点数组

getElementsByClassName()方法从IE9开始兼容

某个节点元素也可以调用getElementsByClassName()方法,从而得到其内部的某类名的元素节点

✨ querySelector()

querySelector()方法,是通过选择器得到元素,括号中直接写选择器就可以了

querySelector()方法只能得到页面上一个元素,如果有多个元素符合条件,则只能得到第一个元素

querySelector()方法从IE8开始兼容,但从IE9开始支持CSS3的选择器,如:nth-child()、:[src^=‘husky’]等css3选择器形式都支持良好

示例代码:

<body>
    <div class="box">
        <p>我是段落1</p>
        <p>我是段落2</p>
        <p id="para">我是段落3</p>
        <p>我是段落4</p>
    </div>
    <script>
        //得到class=box中,id=para的p标签
        var p = document.querySelector('.box #para');
        console.log(p);
    </script>
</body>

image-20230405221157827

✨ querySelectorAll()

querySelectorAll()方法,是通过选择器得到元素数组,括号中写选择器

即使页面上只有一个符合选择器的节点,也将得到长度为1的数组

示例代码:

<body>
    <div class="box">
        <p>我是段落1</p>
        <p>我是段落2</p>
        <p id="para">我是段落3</p>
        <p>我是段落4</p>
    </div>
    <script>
        //得到class=box中的p标签
        var ps = document.querySelectorAll('.box p');
        console.log(ps);
        //得到了数组自然也可以选择其中的某一项了
        console.log(ps[2])
    </script>
</body>

image-20230405222415558

querySelector()querySelectorAll() 是在实际工作中非常常用的获得节点的方法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQL练习02

1.买下所有产品的客户 SQL Create table If Not Exists Customer (customer_id int, product_key int); Create table Product (product_key int); Truncate table Customer; insert into Customer (customer_id, product_key) values (1, 5); insert into Customer (customer_…

鸿蒙:使用Stack、ContentTable、Flex等组件和布局实现一个显示界面

效果展示 一.概述 跟随官网继续HarmonyOS学习 本篇博文实现一个食物详情页的开发Demo 通过这个开发过程学习如何使用容器组件Stack、Flex和基本组件Image、Text&#xff0c;构建用户自定义组件&#xff0c;完成图文并茂的食物介绍 二.构建Stack布局 1.食物名称 创建Stack…

YOLOv5 学习记录

文章目录 整体概况数据增强与前处理自适应Anchor的计算Lettorbox 架构SiLU激活函数YOLOv5改进点SSPF 模块 正负样本匹配损失函数 整体概况 YOLOv5 是一个基于 Anchor 的单阶段目标检测&#xff0c;其主要分为以下 5 个阶段&#xff1a; 1、输入端&#xff1a;Mosaic 数据增强、…

【LeetCode刷题-树】--100.相同的树

100.相同的树 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

【数据结构】C语言实现队列

目录 前言 1. 队列 1.1 队列的概念 1.2 队列的结构 2. 队列的实现 2.1 队列的定义 2.2 队列的初始化 2.3 入队 2.4 出队 2.5 获取队头元素 2.6 获取队尾元素 2.7 判断空队列 2.8 队列的销毁 3. 队列完整源码 Queue.h Queue.c &#x1f388;个人主页&#xff1a…

获取每个部门中当前员工薪水最高的相关信息

个人网站 首发于公众号小肖学数据分析 描述 有一个员工表dept_emp简况如下: 有一个薪水表salaries简况如下: 获取每个部门中当前员工薪水最高的相关信息&#xff0c;给出dept_no, emp_no以及其对应的salary&#xff0c;按照部门编号dept_no升序排列&#xff0c;以上例子输出…

【NI-DAQmx入门】校准

1.设备定期校准的理由 随着时间的推移电子器件的特性会发生自然漂移&#xff0c;可能会导致测量结果的不准确性。防止出现良品和差品筛选出错的情况满足行业国际标准降低设备出现故障的风险使测量结果更具备参考性 2.查找NI设备的校准间隔。 定期校准会使DAQ设备的精度保持在…

电路的基本原理

文章目录 一、算数逻辑单元(ALU)1、功能2、组成 二、电路基本知识1、逻辑运算2、复合逻辑 三、加法器实现1、一位加法器2、串行加法器3、并行加法器 一、算数逻辑单元(ALU) 1、功能 算术运算&#xff1a;加、减、乘、除等 逻辑运算&#xff1a;与、或、非、异或等 辅助功能&am…

C语言ASCII码排序(1086: ASCII码排序(多实例测试))

题目描述 输入三个字符后&#xff0c;按各字符的ASCII码从小到大的顺序输出这三个字符。 输入&#xff1a;输入数据有多组&#xff0c;每组占一行&#xff0c;由三个字符组成&#xff0c;之间无空格。chu 输出&#xff1a;对于每组输入数据&#xff0c;输出一行&#xff0c;字符…

云课五分钟-0Cg++默认版本和升级-std=c++17

前篇&#xff1a; 云课五分钟-0B快速排序C示例代码-注释和编译指令 视频&#xff1a; 云课五分钟-0Cg默认版本和升级-stdc17 文本&#xff1a; 在Linux系统中&#xff0c;可以通过以下步骤升级g&#xff1a; 打开终端&#xff0c;使用root权限或者sudo权限登录。输入以下命令…

cad提示由于找不到mfc140u.dll,无法继续执行代码怎么修复

在Windows操作系统中&#xff0c;mfc140u.dll是一个重要的文件&#xff0c;很多软件运行都需要它&#xff0c;它属于Microsoft Visual C库的一部分。许多基于C的开发项目都依赖于这个文件&#xff0c;如果在使用过程中出现丢失现象&#xff0c;可能导致相关软件或游戏无法正常运…

Linux管道的工作过程

常用的匿名管道&#xff08;Anonymous Pipes&#xff09;&#xff0c;也即将多个命令串起来的竖线。管道的创建&#xff0c;需要通过下面这个系统调用。 int pipe(int fd[2]) 我们创建了一个管道 pipe&#xff0c;返回了两个文件描述符&#xff0c;这表示管道的两端&#xff…

丢掉破解版,官方免费了!!!

哈喽&#xff01;大家好。 几天不见&#xff0c;今天给大家带来一款海外的神器&#xff0c;官方宣布完全免费&#xff0c;但仅限于个人与教育用途&#xff0c;切勿商用噢&#xff01; 不要看这个软件名字普普通通&#xff0c;实际上内蕴乾坤&#xff01; 接下来看我给大家炫一…

【【VDMA彩条显示实验之三 之 RGB LCD 彩条显示实验 】】

VDMA彩条显示实验之三 之 RGB LCD 彩条显示实验 VDMA彩条显示实验之三 之 RGB LCD 彩条显示实验 LCD 的构造是在两片平行的玻璃基板当中放置液晶盒&#xff0c;下基板玻璃上设置 TFT&#xff08;薄膜晶体管&#xff09;&#xff0c;上基板玻璃上设置彩色滤光片&#xff0c;通…

Android修行手册-POI操作中文API文档

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

【Linux系统化学习】进程的状态 | 僵尸进程 | 孤儿进程

个人主页点击直达&#xff1a;小白不是程序媛 Linux专栏&#xff1a;Linux系统化学习 目录 操作系统进程的状态 运行状态 阻塞状态 进程阻塞的现象 挂起阻塞状态 Linux进程状态 Linux内核源代码怎么说 R&#xff08;running状态&#xff09;运行状态 S&#xff08;sl…

改进YOLOv8:结合ODConv构成C2f_ODConv:即插即用的动态卷积/可轻量化

🗝️YOLOv8实战宝典--星级指南:从入门到精通,您不可错过的技巧   -- 聚焦于YOLO的 最新版本, 对颈部网络改进、添加局部注意力、增加检测头部,实测涨点 💡 深入浅出YOLOv8:我的专业笔记与技术总结   -- YOLOv8轻松上手, 适用技术小白,文章代码齐全,仅需 …

穿越风波,“长红”的直播电商依然扎根产业和消费者

当消费者将最后一个快递拿进家门&#xff0c;2023年的双11也就落下了帷幕。相较于往年组队、拼单的玩法&#xff0c;如今最受欢迎的双11 流程&#xff0c;或许已经变成点进自己心仪主播、店铺的直播间&#xff0c;翻阅最新的产品清单&#xff0c;从中选择购物目标&#xff0c;在…

【wp】2023第七届HECTF信息安全挑战赛 Web

伪装者 考点&#xff1a;http协议flask的session伪造ssrf读取文件 首先根据题目要求就行伪造HTTP 这里不多说&#xff0c;比较基础 然后下面得到是个登入 页面&#xff0c;我们输入zxk1ing 得到 说什么要白马王子 &#xff0c;一眼session伪造 看到ey开头感觉是jwt 输入看看 得…

vscode快捷键使用总结

&#xff09; 1、格式化选中的代码 1、格式化选中的代码 vscode中选中所要格式化的代码&#xff1a; ctrl k,ctrlf 其实可以查到该命令 ctrlshiftp打开命令窗口输入format