JavaScript:DOM节点

JavaScript:DOM节点

    • DOM节点
    • 查找节点
      • 父节点查找
      • 子节点查找
      • 兄弟节点查找
    • 插入节点
      • 追加节点
      • 克隆节点
    • 删除节点
    • 浏览器渲染模式
      • 回流
      • 重绘


DOM节点

在这里插入图片描述
DOM树中的每一个内容都称之为节点,主要包括元素节点,属性节点,文本节点等,本博客主要讲述JavaScript中对DOM树的直接操作,包括对节点的增删,查找。


查找节点

在[JavaScript:DOM对象]中,我已经讲述了获取节点的方法,即document.querySelector以及document.querySelectorAll。但是它们都是直接通过选择器查找指定节点,本博客的查找节点,则是通过节点间的关系来查找。

父节点查找

语法:

子元素.parentNode()

这个函数可以返回父元素的节点,根据树的定义,任何一个子元素都只有一个父亲,否则就不算树结构了,所以DOM树中的任意一个节点,都只有一个父亲。
故此函数的返回值是唯一的。

现在我们有如下结构:
在这里插入图片描述
一个父级的ul,内部有四个子级的li,接下来我们尝试使用粉色盒子找父级元素pink.parentNode
在这里插入图片描述
可以看到,我们确实通过pink.parentNode找到了其父级元素ul,并将其改为了银色;

那么ul的父亲是谁?
我们观察HTML代码中,ul外层嵌套的是body,那么ul的父亲就是body。在HTML中,由于父子级的嵌套关系十分明显,所以这种方式可以帮助我们快速地锁定父级元素。


子节点查找

语法:

父元素.children

在JavaScript中,其实我们也有父元素.childNodes这个写法,但是这个写法会得到所有类型的子节点,我们一开始梳理的时候就说明过,元素的节点有非常多种类,但是我们在网页开发中,一般只需要元素节点,而父元素.children这个写法得到的就是所有的元素节点。
在这里插入图片描述
可以看到,两种写法中父元素.children得到了所有的子节点,而父元素.childNodes还会有多余的文本text。
此外,由于一个父亲可以有多个孩子,所以返回结果是一个数组的形式,不过是一个伪数组,不能对其增加删除。


兄弟节点查找

语法:

元素.nextElementSibling
元素.previousElementSibling

由于子元素中,其可能在前后都有兄弟,所以兄弟节点的查找也有两个函数。顾名思义nextElementSibling就是下一个节点,而previousElementSibling就是上一个节点。

此外,我们还可以对兄弟进行多层递进,比如元素.previousElementSibling.previousElementSibling就是上上个兄弟。

示例:
在这里插入图片描述


插入节点

追加节点

追加节点主要分为两种方式:直接在所有子元素的末尾追加,以及插入到某个子元素的前面。
在末尾追加:
语法:

父元素.appendChild(要插入的元素)

示例:
在这里插入图片描述
现在我们将原先在末尾的绿色li拿出父级盒子,然后我们再追加:
在这里插入图片描述
可以看到,我们将绿色的盒子追加到了父级盒子的末尾,而且原先的绿色盒子消失了。
在指定位置插入:
语法:

父元素.insertBefore(要插入的元素, 被插入的元素)

以上代码,会在被插入的元素前面插入目标元素。
示例:
我们现在将黄色盒子拿出father:
在这里插入图片描述

请问如何让其回到原位?
那么就要考虑,是在谁的前面插入,此处要在绿色前面插入,所以插入的代码就是:father.insertBefore(gold, palegreen),看看效果:
在这里插入图片描述


克隆节点

以上两个追加方式,都有一个问题,那就是追加后,原先的元素会消失,相当于将原先的元素移动到了目标位置。
如果你想保留原来的元素,可以使用克隆的方式,复制一份节点。
语法:

元素.cloneNode(Boolean)

此处的布尔值为true时,会将该元素的后代一起复制,否则只复制该元素。

布尔值为false:
在这里插入图片描述
可以看到,我们确实利用克隆,在完成了插入的同时,保留了原先的元素。
但是这个克隆得到的元素,内部没有文字,这是因为我们的参数为false,也就是只克隆这个元素本身,不克隆元素的内容

布尔值为true:
在这里插入图片描述
当布尔值改为true后,克隆得到的元素,就包含元素内部的东西了。


删除节点

语法:

父元素.removeChild(要删除的元素)

示例:
在这里插入图片描述


浏览器渲染模式

在这里插入图片描述

1.解析(Parser)HTML,生成DOM树(DOM Tree)
2.同时解析(Parser) CSS,生成样式规则 (Style Rules)
3.根据DOM树和样式规则,生成渲染树(Render Tree)
4.进行布局 Layout(回流/重排)
5.根据生成的渲染树,得到节点的几何信息(位置,大小)
6.进行绘制 Painting(重绘): 根据计算和获取的信息进行整个页面的绘制
7.Display: 展示在页面上

回流

当 Render Tree 中部分或者全部元素的尺寸、结构、布局等发生改变时,浏览器就会重新渲染部分或全部文档的过程称为 回流。

重绘

由于节点(元素)的样式的改变并不影响它在文档流中的位置和文档布局时(比如:color、background-color、outline等), 称为重绘。

会导致回流(重排)的操作:

页面的首次刷新
浏览器的窗口大小发生改变
元素的大小或位置发生改变
改变字体的大小
内容的变化(如:input框的输入,图片的大小)
激活css伪类 (如::hover)
脚本操作DOM(添加或者删除可见的DOM元素)

简单理解影响到布局了,就会有回流


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

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

相关文章

EasyCVR无人机推流+人数统计AI算法,助力公共场所人群密度管控

一、背景与需求 在公共场所和大型活动的管理中,人数统计和人群密度控制是非常重要的安全问题。传统的方法可能存在效率低下或准确度不足的情况,无法满足现代社会的需求。TSINGSEE青犀可以利用无人机推流AI人流量统计算法,基于计算机视觉技术…

22000mAh 电池,这款国产新机来了场「续航」震撼

见惯了主流智能手机,是时候上一波离谱新机震撼了。 三防手机这一细分类型,咱们普通用户可能接触得比较少; 但对于极限运动、野外探险爱好者来说,这玩意儿可是关键时候能救命的必备神器。 在真正严苛环境面前,性能啥的…

ES慢查询分析——性能提升6 倍

问题 生产环境频繁报警。查询跨度91天的数据,请求耗时已经来到了30s。报警的阈值为5s。 背景 查询关键词简单,为‘北京’ 单次仅检索两个字段 查询时间跨度为91天,覆盖数据为450亿数据 问题分析 使用profle分析,复现监控报警的…

【DevOps 工具链】搭建 项目管理软件 禅道

文章目录 1、简介2、环境要求3、搭建部署环境3.1. 安装Apache服务3.2. 安装PHP环境(以php7.0为例 )3.3. 安装MySQL服务 4、搭建禅道4.1、下载解压4.2、 配置4.2.1、 启动4.2.2、自启动4.2.3、确认是否开机启动 5、成功安装 1、简介 禅道是国产开源项目管…

nvprof:CUDA编程性能分析工具

nvprof分析工具使您能够从命令行收集和查看分析数据。nvprof能够收集CPU和GPU上与CUDA相关的活动的时间线,包括内核执行、内存传输、内存集和CUDA API调用以及CUDA内核的事件或度量。评测选项通过命令行选项提供给nvprof。分析结果在收集分析数据后显示在控制台中&a…

PS 修改图片为固定大小和固定内存

1. 改为固定大小 点击图像->图像大小 然后就可以根据你的需求进行更改了 2. 改为固定内存 点击文件->存储或者存储为web 然后就是如下界面: 点击确定之后,就会有如下界面,其中右边有图片内存的最大大小,三角形处可以来回…

详解Junit单元测试@Test及Assert断言(一学就会,通俗易懂版)

定义 快速入门(扩展:Assert断言) 断言机制 运行该类的所有测试类 Junit常用注解 示例 1. 2. 3. 4.实例方法初始化和释放资源 5.静态方法初始化和释放资源 一样的使用

[SWPUCTF 2021 新生赛]hardrce

[SWPUCTF 2021 新生赛]hardrce wp 参考博客&#xff1a;https://www.cnblogs.com/bkofyZ/p/17644820.html 代码审计 题目的代码如下&#xff1a; <?php header("Content-Type:text/html;charsetutf-8"); error_reporting(0); highlight_file(__FILE__); if(is…

2023年民宿管理系统排名前十的是哪些?哪一个的功能强大?

现在说起去旅游&#xff0c;很多都会选择订民宿&#xff0c;因为民宿装修风格更具个性化和本土气息&#xff0c;适合追求新潮的年轻人&#xff0c;拍照打卡效果很好。另外就是民宿布局和家里比较相似&#xff0c;出游人数比较多的话住着更方便。由于这股风潮的兴起&#xff0c;…

模型性能评估简介

模型评估 混淆矩阵 Positive - 正例Negative (N) - 负例 结果: 预测为正类别 预测为负类别 真实为正类别 True Positive (TP) False Negative (FN) 真实为负类别 False Positive (FP) True Negative (TN)TP - 预测 P, 实际 P, 模型预测正确FP - 预测 P, …

promise的使用和实例方法

前言 异步,是任何编程都无法回避的话题。在promise出现之前,js中也有处理异步的方案,不过还没有专门的api能去处理链式的异步操作。所以,当大量的异步任务逐个执行,就变成了传说中的回调地狱。 function asyncFn(fn1, fn2, fn3) {setTimeout(() > {//处理第一个异步任务fn1…

网工内推 | 技术支持、解决方案工程师,RHCA认证优先,带薪年假

01 天融信 招聘岗位&#xff1a;售后技术支持工程师 职责描述&#xff1a; 1.负责公司运营商态势安全项目系统远程维护与运营支持工作。 2.负责远程对态势平台、数据探针进行日常巡检&#xff0c;及时发现故障问题&#xff0c;并反馈处置。 3.负责远程支撑态势平台的功能考核&…

k8s是什么

生么是k8s&#xff1a; Kubernetes:8个字母省略&#xff0c;就是k8s 自动部署&#xff0c;自动扩展和管理容器化部署的应用程序的一个开源系统、 k8s是负责自动化运维管理多个容器化程序的集群&#xff0c;是一个功能强大的容器编排工具。 分布式和集群化的分布式进行容器管…

Elasticsearch:无需搜索 “Christmas” 即可找到有关圣诞节的书籍

随着假期的临近&#xff0c;我期待着变得舒适&#xff0c;拿起一本新书&#xff0c;享受轻松的时光。 但是使用搜索栏在线发现图书并不像看起来那么容易......大多数零售搜索引擎仅依赖于关键字搜索&#xff0c;当我们确切地知道我们正在寻找什么书名时&#xff0c;这很好&…

渗透测试 | php的webshell绕过方法总结

目录 1.php的异或运算 2.通过获取注释去绕过 3.利用字符的运算符​​​​​​​ 4.通过end函数代替[] 5.通过常量去绕过 6.字符串拼接双美元符 7.通过函数定义绕过 8.通过类定义&#xff0c;然后传参分割 9.多传参方式绕过​​​​​​​ 10.通过get_defined_function…

教你一分钟弄清屏幕SPI接口名称

相关文章 快速入门ESP32——开发环境配置Arduino IDE 快速入门ESP32——开发环境配置PlatformIO IDE 快速入门ESP32—— platformIO添加开源库和自己的开发库 一分钟弄清屏幕SPI接口名称 前言一、屏幕SPI接口名称二、与单片机连接总结 前言 最近&#xff0c;我在捣鼓CD屏幕的SP…

四川云汇优想教育咨询有限公司抖音电商服务的领航者

四川云汇优想教育咨询有限公司&#xff0c;作为一家在电商服务领域有着深厚底蕴的企业&#xff0c;一直以来都以其卓越的服务质量在业界树立了良好的口碑。尤其是在抖音电商服务方面&#xff0c;云汇优想更是凭借其出色的实力和精准的策略&#xff0c;成为了行业的佼佼者。 在抖…

从企业级负载均衡到云原生,深入解读F5

上世纪九十年代&#xff0c;Internet快速发展催生了大量在线网站&#xff0c;Web访问量迅速提升。在互联网泡沫破灭前&#xff0c;这个领域基本是围绕如何对Web网站进行负载均衡与优化。从1997年F5发布了BIG-IP&#xff0c;到快速地形成完整ADC产品线&#xff0c;企业级负载均衡…

使用Dependency Walker和Process Explorer排查瑞芯微工具软件RKPQTool.exe启动报错问题

目录 1、问题说明 2、使用Dependency Walker查看工具程序的库依赖关系 3、在可以运行的电脑上使用Process Explorer查看依赖的msvcr120.dll和msvcp120.dll库的路径 4、C/C运行时库介绍 5、可以下载安装VC_redist.x86.exe或VC_redist.x64.exe解决系统库缺失问题 C软件异常排…

Apache RocketMQ,构建云原生统一消息引擎

本文整理于 2023 年云栖大会林清山带来的主题演讲《Apache RocketMQ 云原生统一消息引擎》 演讲嘉宾&#xff1a; 林清山&#xff08;花名&#xff1a;隆基&#xff09;&#xff0c;Apache RocketMQ 联合创始人&#xff0c;阿里云资深技术专家&#xff0c;阿里云消息产品线负…