JavaScript - Api学习 Day03 (日期对象、节点操作、两种定时器、本地存储)

文章目录

  • 一、日期对象
    • 1.1 实例化
    • 1.2 日期对象方法
  • 二、节点操作
    • 2.1 父子兄弟节点
      • 1. 父节点查找
      • 2. 子节点查找
      • 3. 兄弟关系查找
    • 2.2 增删节点
      • 1. 创建节点 - `createElement`
      • 2. 添加节点
        • 2.1 `appendChild()` 方法
        • 2.2 `insertBefore()` 方法
        • 2.3. 克隆节点 - `cloneNode`
      • 3. 删除节点
        • 3.1 `removeChild()` 方法
        • 3.2 `remove()` 方法
      • 4. 替换节点
        • `replaceChild()` 方法
  • 三、其他
    • 3.1 定时器 的对比
      • 延时函数(setTimeout)
      • 间歇函数(setInterval)
    • 3.2 Js执行机制
  • 四、本地存储
    • 4.1 localStorage
    • 4.2 存储分类sessionStorage
    • 4.3 区别:
    • 4.4 存储复杂数据类型到localStorage
      • 字符串拼接

一、日期对象

1.1 实例化

// 创建一个全局的日期格式化器
const globalFormatter = new Intl.DateTimeFormat('zh-CN', {// locale: 指定语言环境,这里是中文(中国)// 用于确定日期和时间的显示格式以及使用的日历系统。// options: 配置选项对象,用于指定日期和时间的格式化细节// timeZone: 指定时区,这里是东八区(上海)// 用于确定日期和时间的时区。timeZone: 'Asia/Shanghai',// year: 年份的显示方式// 'numeric': 显示完整的年份数字,例如 2023// '2-digit': 显示两位数的年份,例如 23year: 'numeric',// month: 月份的显示方式// 'numeric': 显示数字,例如 5// '2-digit': 显示两位数的数字,例如 05// 'long': 显示完整月份名称,例如 五月// 'short': 显示缩写的月份名称,例如 五月// 'narrow': 显示最短的月份名称,例如 5月month: '2-digit',// day: 日的显示方式// 'numeric': 显示数字,例如 20// '2-digit': 显示两位数的数字,例如 20day: '2-digit',// hour: 小时的显示方式// 'numeric': 显示数字,例如 14// '2-digit': 显示两位数的数字,例如 14hour: '2-digit',// minute: 分钟的显示方式// 'numeric': 显示数字,例如 30// '2-digit': 显示两位数的数字,例如 30minute: '2-digit',// second: 秒的显示方式// 'numeric': 显示数字,例如 45// '2-digit': 显示两位数的数字,例如 45second: '2-digit'});// 使用全局日期格式化器
function formatDateTime(date) {// 使用 globalFormatter 格式化传入的 date 参数// 返回格式化后的日期和时间字符串return globalFormatter.format(date);
}

在这里插入图片描述

1.2 日期对象方法

在这里插入图片描述
时间戳是一个特定的时间,通常以数字表示,用于标记事件发生的确切时间。在计算机科学中,时间戳通常是一个数字,表示从某个特定时间点(如1970年1月1日)到当前时间的毫秒数或秒数。时间戳在记录事件顺序、计算时间间隔和跟踪时间相关数据时非常有用。

在这里插入图片描述

二、节点操作

2.1 父子兄弟节点

node.parentNode: 获取当前节点的父节点。
node.childNodes: 获取当前节点的所有子节点。
node.firstChild: 获取当前节点的第一个子节点。
node.lastChild: 获取当前节点的最后一个子节点。
node.previousSibling: 获取当前节点的前一个兄弟节点。
node.nextSibling: 获取当前节点的下一个兄弟节点。

你描述了如何在DOM中通过父节点、子节点以及兄弟节点来查找和操作节点。下面我将详细解释这些属性和它们的用法。

1. 父节点查找

  • parentNode 属性

    • 用于获取当前节点的父节点。
    • 如果当前节点没有父节点(比如根节点),则返回null
    const child = document.getElementById('child');
    const parent = child.parentNode; // 获取父节点
    

2. 子节点查找

  • childNodes 属性

    • 返回一个包含所有子节点的NodeList,包括元素节点、文本节点(如空格、换行)和注释节点。
    • NodeList是一个类数组对象,可以通过索引访问,但它不是一个真正的数组。
    const parent = document.getElementById('parent');
    const allChildren = parent.childNodes; // 获取所有子节点,包括文本和注释节点
    
  • children 属性(重点)

    • 返回一个包含所有子元素节点的HTMLCollection,不包括文本节点、注释节点等。
    • HTMLCollection是一个类数组对象,可以通过索引访问。
    const parent = document.getElementById('parent');
    const elementChildren = parent.children; // 获取所有元素节点
    

3. 兄弟关系查找

  • 下一个兄弟节点

    • nextElementSibling 属性
      • 用于获取当前节点的下一个兄弟元素节点(即下一个同级元素节点),如果没有则返回null
    const current = document.getElementById('current');
    const nextSibling = current.nextElementSibling; // 获取下一个兄弟元素节点
    
  • 上一个兄弟节点

    • previousElementSibling 属性
      • 用于获取当前节点的上一个兄弟元素节点(即上一个同级元素节点),如果没有则返回null
    const current = document.getElementById('current');
    const previousSibling = current.previousElementSibling; // 获取上一个兄弟元素节点
    

2.2 增删节点

当然,下面是按照从创建开始到增删的顺序,重新整理的内容:

1. 创建节点 - createElement

  • 功能: createElement 用于创建指定标签名称的 HTML 元素节点。
  • const newElement = document.createElement(tagName);
    
  • 参数:
    • tagName: 字符串,表示要创建的元素的标签名称(例如 div, span, p 等)。

2. 添加节点

2.1 appendChild() 方法
  • 功能: 将一个节点添加为指定父节点的最后一个子节点。
  • parentNode.appendChild(newNode);
    
2.2 insertBefore() 方法
  • 功能: 在指定的参考节点之前插入一个新的节点。
  • parentNode.insertBefore(newNode, referenceNode);
    
2.3. 克隆节点 - cloneNode
  • 功能: cloneNode 用于克隆一个节点,可以选择是否深度克隆(包括其子节点)。
  • const clonedNode = originalNode.cloneNode(deep);
    
  • 参数:
    • deep: 布尔值,表示是否进行深度克隆。如果为 true,则克隆节点及其所有子节点;如果为 false,则只克隆节点本身,不包括子节点。默认false

3. 删除节点

3.1 removeChild() 方法
  • 功能: 从父节点中移除一个子节点,并返回被移除的节点。
  • parentNode.removeChild(childNode);
    
3.2 remove() 方法
  • 功能: 直接删除节点本身。
  • element.remove();
    

4. 替换节点

replaceChild() 方法
  • 功能: 用一个新的节点替换一个子节点,并返回被替换的节点。
  • parentNode.replaceChild(newNode, oldNode);
    

三、其他

3.1 定时器 的对比

延时函数(setTimeout)用于在指定的时间后执行一次函数,而间歇函数(setInterval)用于每隔一定时间重复执行函数。

延时函数(setTimeout)

  • 函数语法setTimeout(function, delay)
  • 介绍setTimeout 函数会在指定的延迟时间后执行一次指定的函数。
  • 例子
setTimeout(function() {console.log('延时函数执行了!');
}, 2000);

请添加图片描述

间歇函数(setInterval)

  • 函数语法setInterval(function, delay)
  • 介绍setInterval 函数会每隔指定的时间重复执行指定的函数。
  • 例子
setInterval(function() {console.log('间歇函数执行了!');
}, 1000);

请添加图片描述

3.2 Js执行机制

JavaScript的执行机制是单线程的,采用的是事件循环模型。

代码执行时,会被分为同步任务和异步任务,同步任务会按顺序执行,而异步任务会被放入任务队列中,在主线程空闲时才会被执行。事件循环会不断地从任务队列中取出任务执行,这样就实现了异步操作。

同步任务是按照代码顺序依次执行,执行完一个才能执行下一个,会阻塞后续代码的执行;

// 同步任务示例
console.log("Start");
for (let i = 0; i < 3; i++) {console.log(i);
}
console.log("End");

异步任务不会等待,会先继续执行后续代码,当异步任务完成后会通过回调函数或者Promise来通知执行结果。这样可以提高程序的性能和响应速度。

// 异步任务示例
console.log("Start");
setTimeout(() => {console.log("Async task completed");
}, 2000);
console.log("End");

执行栈(call stack)是用来存储代码执行过程中的上下文和调用关系的数据结构,遵循先进后出的原则。任务队列(task queue)则用来存储异步任务的回调函数。事件循环会不断地将任务队列中的任务取出,放入执行栈中执行,这样实现了异步任务的执行。

四、本地存储

4.1 localStorage

// 存储数据到localStorage
localStorage.setItem('key', 'value');// 从localStorage获取数据
const data = localStorage.getItem('key');// 删除localStorage中的数据
localStorage.removeItem('key');// 清空localStorage
localStorage.clear();

4.2 存储分类sessionStorage

// 存储数据到sessionStorage
sessionStorage.setItem('key', 'value');// 从sessionStorage获取数据
const data = sessionStorage.getItem('key');// 删除sessionStorage中的数据
sessionStorage.removeItem('key');// 清空sessionStorage
sessionStorage.clear();

在这里插入图片描述

4.3 区别:

  • 作用域:localStorage的数据在浏览器关闭后仍然存在,而sessionStorage的数据在当前会话结束(关闭标签页或浏览器)时会被清除。
  • 存储大小:localStorage的存储容量较大,一般为5MB,而sessionStorage的容量较小,一般为5MB。
  • 共享性:localStorage的数据在同一域名下的不同窗口、标签页之间共享,而sessionStorage的数据只在同一标签页下共享。
  • 生命周期:localStorage的数据不会过期,除非手动删除,而sessionStorage的数据在会话结束时自动删除。
  • 用途:localStorage适合长期存储,sessionStorage适合临时存储会话数据。

4.4 存储复杂数据类型到localStorage

  1. 将复杂数据类型(如对象)转换为JSON字符串:使用JSON.stringify()方法将对象转换为字符串库存储在本地。
  2. 将JSON字符串存储到localStorage中:使用localStorage.setItem()方法将JSON字符串存储在localStorage中,以指定的键名作为标识。
  3. 从localStorage获取数据:使用localStorage.getItem()方法获取存储在localStorage中的JSON字符串。
  4. 解析JSON字符串为复杂数据类型:使用JSON.parse()方法将获取的JSON字符串解析为原始的复杂数据类型,如对象或数组。
// 存储复杂数据类型到localStorage(需要先将对象转换为JSON字符串)
const complexObject = { name: 'Alice', age: 30 };
localStorage.setItem('complexData', JSON.stringify(complexObject));// 从localStorage获取并解析复杂数据类型
const storedData = localStorage.getItem('complexData');
const parsedData = JSON.parse(storedData);
console.log(parsedData);

字符串拼接

通过map方法,我们将数组中的每个数字转换为字符串形式,得到一个新的字符串数组stringArray。然后,我们使用join方法将这个字符串数组中的元素用指定的分隔符(这里是-)连接起来,得到最终的拼接字符串result


// 使用map和join方法实现字符串拼接
const array = [1, 2, 3, 4, 5];// 使用map方法将数组元素转换为字符串
const stringArray = array.map(num => num.toString());// 使用join方法将字符串数组连接成一个字符串
const result = stringArray.join('-');console.log(result); // 输出: "1-2-3-4-5"

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

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

相关文章

[数据集][目标检测]抽烟检测数据集VOC+YOLO格式22559张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;22559 标注数量(xml文件个数)&#xff1a;22559 标注数量(txt文件个数)&#xff1a;22559 标…

408算法题leetcode--第一天

参考 参考题单 1523. 在区间范围内统计奇数数目 1523. 在区间范围内统计奇数数目思路&#xff1a;数据量有 1 0 9 10^9 109&#xff0c;所以遍历求解会超时&#xff1b;而(low, high)区间中的奇数 (0, high) - (0, low - 1)的奇数时间和空间复杂度&#xff1a;O(1) class …

flink中slotSharingGroup() 的详解

在 Apache Flink 中&#xff0c;slotSharingGroup() 是一个用于控制算子&#xff08;operator&#xff09;之间资源共享的机制。它允许多个算子共享相同的 slot&#xff08;即资源容器&#xff09;。Slot 是 Flink 中的资源单位&#xff0c;slot 共享可以提高资源利用率&#x…

VisualStudio环境搭建C++

Visual Studio环境搭建 说明 C程序编写中&#xff0c;经常需要链接头文件(.h/.hpp)和源文件(.c/.cpp)。这样的好处是&#xff1a;控制主文件的篇幅&#xff0c;让代码架构更加清晰。一般来说头文件里放的是类的申明&#xff0c;函数的申明&#xff0c;全局变量的定义等等。源…

echarts图 图例跑上面去了 不在右边

legend 中缺少 "right": "1%", "top": "center",

PyTorch----模型运维与实战

一、PyTorch是什么 PyTorch 由Facebook开源的神经网络框架&#xff0c;专门针对 GPU 加速的深度神经网络&#xff08;DNN&#xff09;编程。 二、PyTorch安装 首先确保你已经安装了GPU环境&#xff0c;即Anaconda、CUDA和CUDNN 随后进入Pytorch官网​​​​​​PyTorch 官…

【机器学习】高斯网络的基本概念和应用领域以及在python中的实例

引言 高斯网络&#xff08;Gaussian Network&#xff09;通常指的是一个概率图模型&#xff0c;其中所有的随机变量&#xff08;或节点&#xff09;都遵循高斯分布 文章目录 引言一、高斯网络&#xff08;Gaussian Network&#xff09;1.1 高斯过程&#xff08;Gaussian Proces…

细说STM32F407通用定时器的基础知识

目录 一、通用定时器功能概述 二、细说2通道定时器的功能 1.时钟信号和触发控制器 2.时基单元工作原理 (1)计数寄存器(CNT) (2)预分频寄存器(PSC) (3)自动重载寄存器(ARR) (4)时基单元的控制位 3.捕获/比较通道 三、生成PWM波 1.生成PWM波的原理 2.与生成PWM波相关的HA…

2023下半年软考网络规划

【考情分析】2023下半年软考网络规划设计师机考考情分析-真题解析公开课视频&#xff01;_哔哩哔哩_bilibili2023年11月软考网络规划设计师案例分析解析与考后复盘_哔哩哔哩_bilibili全网首发&#xff01;2023年下半年软考【高级】网规真题试卷--案例分析&#xff08;部分回忆版…

表观遗传系列1:DNA 甲基化以及组蛋白修饰

1. 表观遗传 表观遗传信息很多为化学修饰&#xff0c;包括 DNA 甲基化以及组蛋白修饰&#xff0c;即DNA或蛋白可以通过化学修饰添加附加信息。 DNA位于染色质&#xff08;可视为微环境&#xff09;中&#xff0c;并不是裸露的&#xff0c;因此DNA分子研究需要跟所处环境结合起…

Tuxera NTFS for Mac破解版下载 Tuxera NTFS for Mac2023激活码 mac电脑ntfs磁盘软件

Tuxera NTFS for Mac是一款优秀的Mac系统完全读写软件&#xff0c;提供Fat32、NTFS、Exfat、mac os扩展格式的转换&#xff0c;稳定性好&#xff0c;传输速度极快。Tuxera NTFS for Mac功能丰富&#xff0c;能修复NTFS卷、创建NTFS磁盘映像、创建NTFS分区等等。同时软件支持所有…

【EI会议末轮截稿通知】第三届电子信息技术国际学术会议(EIT 2024)

第三届电子信息技术国际学术会议&#xff08;EIT 2024&#xff09; The 3rd International Conference on Electronic Information Technology 重要信息 大会官网&#xff1a;www.ic-eit.net 三轮截稿时间&#xff1a;2024年9月16日23:59分&#xff08;后续不再征稿&#x…

【C++登堂入室】类和对象(中)——类的6个默认成员函数

目录 一、类的6个默认成员函数 ​编辑二、构造函数 2.1 概念 2.2 特性 三、析构函数 3.1 概念 3.2 特性 四、拷贝构造函数 4.1 概念 4.2 特征 五、赋值运算符重载 5.1 运算符重载 5.2 赋值运算符重载 5.3 前置和后置重载 六、日期类的实现 七、const成员 八、…

对称加密

一、可用的对称加密算法 序列算法 分组算法 二、分组算法 三、初始化向量 四、链接模式 ecb 模式 五、数据补齐方案 cbc 模式 六、AEAD

本地安装Ollama+WebUI

本地安装OllamaWebUI B站教程地址&#xff1a;https://www.bilibili.com/video/BV1Kz421h7Jk/?spm_id_from333.337.search-card.all.click&vd_source42b07826977d09765ec11b9fa06715e5 一、下载Ollama https://ollama.com/download 支持mac、linux、windows 选择在ubu…

鸿蒙原生应用元服务开发-仓颉基础数据类型元组类型

元组&#xff08;Tuple&#xff09;可以将多个不同的类型组合在一起&#xff0c;成为一个新的类型。元组类型使用 (T1, T2, …, TN) 表示&#xff0c;其中 T1 到 TN 可以是任意类型&#xff0c;不同类型间使用逗号&#xff08;,&#xff09;连接。元组至少是二元&#xff0c;例…

Tranformer分布式特辑

随着大模型的发展&#xff0c;如何进行分布式训练也成了每位开发者必备的技能。 1. 单机训练 CPU OffloadingGradient Checkpointing 正向传播时&#xff0c;不存储当前节点的中间结果&#xff0c;在反向传播时重新计算&#xff0c;从而起到降低显存占用的作用 Low Precision…

函数题 6-4 求自定类型元素的平均【PAT】

文章目录 题目函数接口定义裁判测试程序样例输入样例输出样例 题解解题思路完整代码AC代码 编程练习题目集目录 题目 要求实现一个函数&#xff0c;求 N N N 个集合元素 S [ ] S[] S[] 的平均值&#xff0c;其中集合元素的类型为自定义的 E l e m e n t T y p e ElementTyp…

理想汽车嵌入式面试及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集…

【C++】C++ 标准库string类介绍(超详细解析,小白必看系列)

C 标准库中的 std::string 类是一个非常强大的工具&#xff0c;用于处理和操作字符串。它属于 <string> 头文件&#xff0c;并提供了一套丰富的功能和方法。以下是 std::string 类的一些主要特性和常用操作&#xff1a; 1 string简介 字符串是表示字符序列的类 标准的字…