【Web APIs】DOM节点

目录

1.节点操作

1.1DOM节点

1.2查找节点

1.2.1父节点查找

1.2.2子节点查找

1.2.3兄弟节点查找

1.3增加节点

1.4克隆节点

1.5删除节点

2.时间对象

2.1实例化

2.2时间对象方法

2.3时间戳

3.重绘和回流


1.节点操作

1.1DOM节点

DOM节点:DOM树中的每一个内容都称为节点

节点类型:

1️⃣元素节点:

  • 所有的标签:如body,div
  • html是根节点

2️⃣属性节点:

  • 所有的属性,如src,href

3️⃣文本节点:

  • 所有的文本

1.2查找节点

节点关系:

  1. 父节点
  2. 子节点
  3. 兄弟节点

1.2.1父节点查找

parentNode属性

语法:子元素.parentNode

作用:返回最近一级的父节点,找不到返回null

1.2.2子节点查找

语法:父元素.children

  • childNodes:获得所有子节点,包括文本节点(空格,换行),注释节点
  • children:仅获得所有元素节点,返回一个伪数组

1.2.3兄弟节点查找

下一个兄弟节点:nextElementSibling属性

上一个兄弟节点:previousElementSibling属性

1.3增加节点

增加节点步骤:

  1. 创建一个新节点
  2. 把创建的新节点放入到指定元素内部

①创建节点

  • 语法:document.createElement('标签名')

②追加节点

要想在页面看到,还得插入到某个父元素中

  • 插入到父元素的最后一个子元素:父元素.appendChild(要插入的元素)
  • 插入到父元素中某个子元素的前面:父元素.insertBefore(要插入的元素,在哪个元素的前面)

1.4克隆节点

语法:元素.cloneNode(布尔值)

作用:cloneNode会克隆出一个跟原标签一样的元素,括号内传入布尔值

  • 若为true,则代表克隆时会包含后代节点一起克隆
  • 若为false,则代表克隆时不包含后代节点(默认为false)

1.5删除节点

在JavaScript原生DOM操作中,要删除元素必须通过父元素删除

语法:父元素.removeChild(要删除的元素)

📖Note:

  • 如果不存在父子关系则删除不成功
  • 删除节点和隐藏节点区别:隐藏节点还是存在的,删除之后节点就不存在了

2.时间对象

时间对象Date:用来表示时间的对象,可以得到当前系统时间

2.1实例化

在代码中发现new关键字时,一般将这个操作称为实例化

创建一个时间对象并获取时间

获得指定时间

2.2时间对象方法

时间对象返回的数据我们不能直接使用,需要转换成实际开发中常用的格式

方法作用说明
getFullYear()获得年份获取四位年份
getMonth()获得月份取值为0~11
getDate()获得月份中的某一天不同月份的取值不同
getDay()获取星期取值为0~6
getHours()获取小时取值为0~23
getMinutes()获取分钟取值为0~59
getSeconds()获取秒取值为0~59

2.3时间戳

时间戳:从1970年1月1日(UTC/GMT的午夜)开始所经过的毫秒数,不考虑闰秒

倒计时核心思想:

将来某个时间的时间戳 - 现在时间的时间戳 = 毫秒数 ===> 转换成时分秒

案例:倒计时

<!DOCTYPE html>
<html lang="en"><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>.countdown {width: 240px;height: 305px;text-align: center;line-height: 1;color: #fff;background-color: brown;overflow: hidden;}.countdown .tips {font-size: 16px;margin: 25px 0 14px;}.countdown .title {font-size: 33px;}.countdown .over {margin-top: 80px;font-size: 23px;}.countdown small {font-size: 17px;}.countdown .clock {width: 142px;margin: 18px auto 0;overflow: hidden;}.countdown .clock span,.countdown .clock i {display: block;text-align: center;line-height: 34px;font-size: 23px;float: left;}.countdown .clock span {width: 34px;height: 34px;border-radius: 2px;background-color: #303430;}.countdown .clock i {width: 20px;font-style: normal;}.countdown .now i {font-style: normal;}</style>
</head><body><div class="countdown"><!-- 顶部日期提示 --><p class="tips"></p><p class="title">下班倒计时</p><p class="clock"><span id="hour">00</span><i>:</i><span id="minute">00</span><i>:</i><span id="second">00</span></p><!-- 下班时间 --><p class="over">下班时间是18:00:00</p></div><script>// 顶部日期提示let date = new Date()let year = date.getFullYear()let month = date.getMonth() + 1let day = date.getDate()let tip = document.querySelector('.tips')tip.innerHTML = `今天是${year}年${month}月${day}日`// 获取元素let hour = document.querySelector('#hour')let minute = document.querySelector('#minute')let second = document.querySelector('#second')time()setInterval(time, 1000)function time() {// 获得现在的时间戳let now = +new Date()// 得到指定时间的时间戳let last = +new Date('2024-3-24 18:00:00')// 计算时间戳之差 let count = (last - now) / 1000// 转换为时分秒// h = parseInt(总秒数 / 60 / 60 % 24)// m = parseInt(总秒数 / 60 % 60)// s = parseInt(总秒数 % 60)let h = parseInt(count / 60 / 60 % 24)// h补0h = h < 10 ? '0' + h : hlet m = parseInt(count / 60 % 60)m = m < 10 ? '0' + m : mlet s = parseInt(count % 60)s = s < 10 ? '0' + s : s// console.log(h, m, s)//修改内容hour.innerText = hminute.innerHTML = msecond.innerHTML = s}</script></body></html>

3.重绘和回流

浏览器是如何进行界面渲染的

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

重绘和回流:

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

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

📖Note:

  • 重绘不一定引起回流,而回流一定会引起重绘

会导致回流的操作:

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

简单来说:影响到布局了,就会引起回流

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

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

相关文章

CHAT~(持续更新)

CHAT&#xff08;持续更新&#xff09; 实现一个ChatGPT创建API设计页面布局业务操作技术架构 编码其他 实现一个ChatGPT 创建API 最简单也最需要信息的一步 继续往下做的前提 此处省略&#xff0c;想要获取接口创建方式联系 设计 页面布局 按照官网布局 业务操作 注册登…

绝地求生:PUBG七周年庆典开启!参与周年话题投稿赢丰厚奖励

为庆祝七周年&#xff0c;闲游盒PUBG官方准备了众多活动与奖励&#xff0c;一起在庆典中创造难忘的回忆吧&#xff01;七周年庆典期间游玩PUBG&#xff0c;参与 #乐在7中鸡味无穷# 周年话题投稿&#xff0c;即有机会赢取魔力甜心萨莉套装 2奖励。 参与方式 在小黑盒PUBG社区中…

贪心算法相关题目

文章目录 1. 什么是贪心&#xff1f;2. 分发饼干3. 摆动序列4. 最大子数组和5. 买卖股票的最佳时机 II6. 跳跃游戏7. 跳跃游戏 II8.K 次取反后最大化的数组和9.加油站10.分发糖果11.柠檬水找零 1. 什么是贪心&#xff1f; 贪心的本质是选择每一阶段的局部最优&#xff0c;从而…

第1篇:Mysql数据库表结构导出字段到Excel(一个sheet中)

package com.xx.util;import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.sql.*; import java.io.*;public class DatabaseToExcel {public static void main(String[] args) throws Exception {// 数据库连接配置String u…

Less-1(sqlmap手工注入攻击)--sqli

第一步&#xff1a;判断他是什么sql注入&#xff1f; 1 报错 1 and 12 -- 错误结果(--表示注释符) 1 and 11 -- 正确结果 第二步&#xff1a;判断返回字段数 ?id1 order by 3-- 正确显示结果 ?id1 order by 4--当列数为4时开始报错&#xff0c;所以只有三列 注&#xf…

github的2FA问题

文章目录 问题描述方式一&#xff1a;chrome浏览器插件 问题描述 方式一&#xff1a;chrome浏览器插件 1、 第一步 安装插件&#xff1a;Authenticator 2、 第二步 打开github验证界面&#xff0c;并点击该插件

蓝桥杯-模拟-航班时间

题目 思路 去时到达外地的时间-去时离开本地的时间 时区差时飞行时间 回时到达本地的时间-回时离开外地的时间 -时区差时飞行时间 故二者加起来即可得到飞行时间 代码 # 去时到达外地的时间-去时离开本地的时间 时区差时飞行时间 # 回时到达本地的时间-回时离开外地的时间 -…

时间对比投资:衡量5天与10天六西格玛绿带培训的价值

六西格玛绿带培训专为希望提高其业务流程改进技能的专业人员设计。绿带培训通常涵盖六西格玛的基础知识、DMAIC(定义、测量、分析、改进、控制)方法论、以及各种质量管理工具和技巧。绿带受训者通常在他们的工作职责中负责领导小型项目或作为黑带项目团队的成员&#xff0c;下面…

小兴教你做平衡小车-蓝牙模块JDY-31介绍

文章目录 1 前言2 模块资料下载3 模块介绍3.1 模块特点3.2 模块相关指令介绍3.3 指令学习3.3.1 查看版本号3.3.2 软复位3.3.3 查看模块的波特率3.3.4 修改模块的波特率3.3.5 蓝牙配对密码查看3.3.6 修改蓝牙配对密码3.3.7 广播名查询3.3.8 广播名修改3.3.7 恢复出厂配置3.3.8 串…

人工智能的春天:改变已然发生

以下文章来源&#xff1a;青岛日报 某种意义上说&#xff0c;这个春天属于人工智能&#xff08;AI&#xff09;。 继一年多前ChatGPT惊艳全球后&#xff0c;OpenAI再次放出“王炸”成果——视频大模型Sora&#xff1b;苹果放弃布局多年的造车计划&#xff0c;将ALL in AI&#…

MySQL数据库的事务

目录 1、事务的概念 2、事务的ACID特点 2.1 原子性 2.2 一致性 2.3 隔离性 2.3.1MySQL事务隔离级别 2.3.2事务隔离级别的作用范围 2.3.3 查询事务的隔离级别 2.3.4 设置事务的隔离级别 ​编辑 2.4 持久性 3、事务控制语句 3.1测试begin和commit&#xff08;开始…

SOC子模块---RTC and watchdog

RTC RTC大致执行过程&#xff1a; 对SOC 中的锁相环或者外部晶振的时钟进行计数&#xff1b;产生时&#xff0c;分&#xff0c;秒的中断&#xff1b;送给中断控制器&#xff1b;中断控制器进行优先权选择后送给cpu&#xff1b;Cpu执行中断服务程序&#xff1b;在中断服务程序…

python程序打包

目录 1. 命令2. 安装2.1 PyInstaller2.2 cx_Freeze(笔者未用过) 3. 打包示例3.1 在 pycharm 中执行3.2 若使用打包命令时报错3.3 路径问题 python打包成可执行文件&#xff0c;用于在没有Python环境的地方运行该程序&#xff0c;与qt打包类似。&#xff08;笔者写的qt打包地址&…

鸿蒙实战开发:【7日天气预报】

先来看一下效果 本项目界面搭建基于ArkUI中TS扩展的声明式开发范式&#xff0c; 数据接口是[和风&#xff08;天气预报&#xff09;]&#xff0c; 使用ArkUI自带的网络请求调用接口。 我想要实现的一个功能是&#xff0c;查询当前城市的实时天气&#xff0c; 目前已实现的功…

聚类算法之高斯混合模型聚类 (Gaussian Mixture Model, GMM)

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 高斯混合模型&#xff08;GMM&#xff09;是统计模型中的一颗璀璨之星&#xff0c;它为数据提供了一种复杂而又强大的表示方法。在机器学习的许多…

并查集|1971. 寻找图中是否存在路径、684.冗余连接、685.冗余连接II

目录 并查集基础 1971. 寻找图中是否存在路径 684.冗余连接 685.冗余连接II 并查集基础 并查集主要有三个功能。 寻找根节点&#xff0c;函数&#xff1a;find(int u)&#xff0c;也就是判断这个节点的祖先节点是哪个将两个节点接入到同一个集合&#xff0c;函数&#xf…

【深度学习】一文搞懂 如何计算图像数据集的RGB均值和方差(超详细的哦~)

计算图像数据集的RGB均值和方差 1、引言2、RGB均值和方差2.1 计算RGB均值和方差原因2.2 计算RGB均值和方差步骤2.3 代码实现2.3.1 TensorFlow计算RGB均值和方差2.3.2 PyTorch计算RGB均值和方差 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c;帮个忙呀 小鱼&#xff1a;在…

了解Spring:Java开发的利器

Spring是一款开源的轻量级Java开发框架&#xff0c;旨在提高开发人员的效率和系统的可维护性。本文将介绍Spring的基本概念、使用优势、设计模式以及与Spring MVC和Spring Boot的关联。 什么是Spring&#xff1f; Spring是一款开源的轻量级Java开发框架&#xff0c;它由多个模…

STM32之HAL开发——HAL库框架介绍

HAL库外设设计思想 HAL库借鉴面向对象的设计思想&#xff0c;将外设驱动封装为对象。 HAL库使用主线 HAL使用的主要用在俩个地方&#xff0c;无外乎外设初始化以及外设的使用。想用好这两个功能&#xff0c;我们首先得对外设的封装有一定的了解。 句柄结构体 xx_HandleTypeDef…

【吾爱破解】Android初级题(二)的解题思路 _

拿到apk&#xff0c;我们模拟器打开看一下 好好&#xff0c;抽卡模拟器是吧&#x1f600; jadx反编译看一下源码 找到生成flag的地方&#xff0c;大概逻辑就是 java signatureArr getPackageManager().getPackageInfo(getPackageName(), 64).signaturesfor (int i 0; i &l…