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 标…

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成员 八、…

Tranformer分布式特辑

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

跨境独立站支付收款常见问题排雷篇1.0丨出海笔记

最近小伙伴们在社群讨论挺多关于独立站支付问题的&#xff0c;鉴于不少朋友刚接触独立站&#xff0c;我整理了一些独立站支付相关的问题和解决方案&#xff0c;供大家参考&#xff0c;百度网上一堆媒体的那些软文大家就别看了&#xff0c;都是软广或者抄来抄去&#xff0c;让大…

语义分割数据集|河流湖泊分割|水灾预警

江河湖泊自然水灾检测数据集&#xff0c;数据集整理不易&#xff0c;获取地址在最后&#xff0c;具体信息如下&#xff1a; 总数&#xff1a;290张 类别&#xff1a;1类 数据集大小&#xff1a;约106M 数据整理不易&#xff0c;数据集获取地址如下&#xff1a; https://…

基于JAVA+SpringBoot+Vue的前后端分离企业oa管理系统

基于JAVASpringBootVue的前后端分离企业oa管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1…

springboot项目中 前端浏览器访问时遇到跨域请求问题CORS怎么解决?has been blocked by CORS policy

文章目录 现象解决方案1. **全局配置 CORS**2. **使用 CrossOrigin 注解**3. **配置 Spring Security**4. **自定义 CORS 过滤器** Spring Security 6.x 及其后续版本解决方案1. 使用 SecurityFilterChain 配置 CORS2. 重要配置说明3. 在生产环境中的最佳实践 现象 前端浏览器…

【linux】进程控制(2)

3. 进程等待 1. 是什么 通过系统调用 wait/waitpid 对子进程的退出状态进行检测和回收的功能 2. 为什么 僵尸进程无法杀死&#xff0c;通过进程等待来杀掉它&#xff0c;进而解决内存泄漏的问题 &#xff08;一&#xff09;进程等待的方法 a. wait : 代码 wait : 等待任意一…

某仿soul欲音社交系统存在任意文件读取漏洞

1 阅读须知 技术文章仅供参考&#xff0c;此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直…

医院管理|基于java的医院管理系统小程序(源码+数据库+文档)

医院管理系统小程序 目录 基于java的医院管理系统小程序 一、前言 二、系统设计 三、系统功能设计 医生信息管理 排班信息管理 科室信息管理 科室预约 病历信息 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a;…

AVL树的模拟实现(插入,验证)

目录 前言 AVL树的概念 AVL树的旋转 旋转 左旋 右旋 左右旋 右左旋 AVL的insert的实现 AVL的验证 完整代码 总结 前言 本文会先将AVL树的旋转进行讲解&#xff0c; 然后再对代码进行实现和展示。 AVL树的概念 首先 AVL树 是一种平衡树&#xff0c; 平衡树是在二…