JavaScript日期对象、DOM节点操作(查找、增加、克隆、删除)

news2024/10/6 4:07:12

目录

  • 1. 日期对象
  • 2. DOM节点操作
    • 2.1 查找节点
    • 2.2 增加节点
    • 2.3 克隆节点
    • 2.4 删除节点

1. 日期对象

实例化日期对象

  • 获取当前时间: new Date()
  • 获取指定时间: new Date('2023-12-1 17:12:08')

日期对象方法:

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

时间格式转换

  • date.toLocaleString(): 日期 + 时间
  • date.toLocaleDateString(): 日期
  • date.toLocaleTimeString(): 时间

示例如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>test title</title>

</head>
<body>

  <script>
    // 获取当前时间
    const nowDate = new Date()
    console.log(nowDate)  // Fri Dec 01 2023 17:23:08 GMT+0800 (中国标准时间)
    // 获取指定时间
    const date2 = new Date('2023-12-1 17:23:06')
    console.log(date2)  // Fri Dec 01 2023 17:23:06 GMT+0800 (中国标准时间)

    // 获取月份
    console.log(nowDate.getMonth() + 1)  // 12

    // 时间格式传唤
    console.log(nowDate.toLocaleString())   // 2023/12/1 17:23:08
    console.log(nowDate.toLocaleDateString())  // 2023/12/1
    console.log(nowDate.toLocaleTimeString())  // 17:23:08
  </script>
</body>
</html>

时间戳
指1970年01月01日00时00分00秒起至指定时间的毫秒数。有三种方式获取时间戳,如下所示:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>test title</title>

</head>
<body>

  <script>
    // 方式一: 使用getTime()方法
    const date = new Date()
    console.log(date.getTime())
    // 方式二: 使用+new Date()
    console.log(+new Date())
    // 方式三: 使用Date.now()
    console.log(Date.now());
  </script>
</body>
</html>

2. DOM节点操作

2.1 查找节点

  • 查找父节点:通过子元素.parentNode,找最近一级的父节点,找不到返回null
  • 查找子节点
    • 通过父元素.childNodes,获得所有子节点,包括文本节点(空格、换行)、注释节点等
    • 通过父元素.children,仅获得所有元素子节点,返回一个伪数组
  • 查找兄弟节点
    - 通过元素.previousElementSibling,获取上一个兄弟节点
    - 通过元素.nextElementSibling,获取下一个兄弟节点

示例如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>test title</title>

</head>
<body>
  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
  </ul>

  <script>
    // 查找父节点
    const li2 = document.querySelector('ul li:nth-child(2)')
    const ul = li2.parentNode
    console.log(ul)

    // 查找子节点
    console.log(ul.children)

    // 查找兄弟节点
    console.log(li2.previousElementSibling.innerHTML)
    console.log(li2.nextElementSibling.innerHTML)
  </script>
</body>
</html>

控制台打印的消息如下:
查找节点效果

2.2 增加节点

  1. 先创建一个新的节点(例如: document.createElement('div'))
  2. 然后把创建的新的节点放入到指定的元素内部
    • 方式一: 插入到父元素的最后一个子元素: 父元素.appendChild(要插入的新元素)
    • 方式二: 插入到父元素中某个子元素的前面: 父元素.insertBefore(要插入的新元素, 放到哪个元素的前面)。如果放到哪个元素的前面获取不到,则以appendChild方式插入

示例:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>test title</title>

</head>
<body>
  <ul>
    <li>中间</li>
  </ul>
  <script>
    const ul = document.querySelector('ul')

    const lastLi = document.createElement('li')
    lastLi.innerHTML = '最后'
    ul.appendChild(lastLi)

    const firstLi = document.createElement('li')
    firstLi.innerHTML = '第一'
    ul.insertBefore(firstLi, ul.children[0])
  </script>
</body>
</html>

页面效果如下:
增加节点效果

2.3 克隆节点

cloneNode会克隆出一个跟原标签一样的元素。元素.cloneNode(布尔值),布尔值默认为false

  • 若为true,则代表克隆时会包含后代节点、文本节点、属性节点
  • 若为false,则代表克隆时不包含后代节点、文本节点,但包含属性节点

示例:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>test title</title>

</head>
<body>
  <ul>
    <li>1</li>
  </ul>
  <script>
    const ul = document.querySelector('ul')
    const li1 = ul.children[0].cloneNode(true)
    ul.appendChild(li1)
  </script>
</body>
</html>

页面效果如下:
克隆节点效果

2.4 删除节点

  • 删除元素必须通过父元素删除,父元素.removeChild(要删除的元素)。如不存在父子关系则删除不成功
  • 隐藏节点(display:none)只是将节点隐藏,但还是存在的

示例:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>test title</title>

</head>
<body>
  <ul>
    <li>我要被删除了</li>
  </ul>

  <script>
    const ul = document.querySelector('ul')
    ul.removeChild(ul.children[0])  // 删除完后,页面为空白
  </script>
</body>
</html>

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

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

相关文章

建筑学跑路:揭秘热门转行新选择!

话说建筑学真的是我见过最关心同行的专业&#xff0c;每个建筑学跑路的帖子下面都有人问&#xff1a;你跑哪里去了&#xff1f; 很多人表示&#xff0c;我也想跑 当然不仅建筑学&#xff0c;园林的、城规的、土木的也会来凑热闹&#xff1a; 很多小伙伴分享了自己的转行经历&a…

【免费分享】全国shp数据汇总(中国湖泊、县界、公路、河流、铁路、国界线、经纬线、省会城市、省级行政区、县城驻地、线状省界)

ESRI Shapefile&#xff08;shp&#xff09;&#xff0c;或简称shapefile&#xff0c;该文件格式已经成为了地理信息软件界的开放标准&#xff0c;也是重要的交换格式&#xff0c;能够在ESRI与其他公司的产品之间进行数据互操作。 Shapefile属于一种矢量图形格式&#xff0c;它…

电脑硬盘文件隐藏了怎么恢复数据?轻松上手不求人

在数字化时代&#xff0c;电脑硬盘中存储的数据对于个人和企业而言都至关重要。然而&#xff0c;有时我们可能会遇到一些意想不到的情况&#xff0c;比如硬盘中的文件突然消失了或者变成了隐藏状态。这种情况不仅让人感到困惑&#xff0c;还可能对日常工作和生活造成不小的影响…

cesium按照参数绘制不同形状的船舶

俺们公司之前有个自创的所谓前端GIS框架&#xff0c;是用Cesium搞的。我对该框架不熟悉&#xff0c;用它在地图上作画&#xff0c;画船舶符号&#xff0c;看以前的代码&#xff0c;感觉十分艰深晦涩&#xff0c;什么材质、纹理&#xff0c;令人头大如斗。我4年前用过一阵Cesium…

Multi-Head RAG:多头注意力的激活层作为嵌入进行文档检索

现有的RAG解决方案可能因为最相关的文档的嵌入可能在嵌入空间中相距很远&#xff0c;这样会导致检索过程变得复杂并且无效。为了解决这个问题&#xff0c;论文引入了多头RAG (MRAG)&#xff0c;这是一种利用Transformer的多头注意层的激活而不是解码器层作为获取多方面文档的新…

mysql分析常用锁

这里写自定义目录标题 1.未提交事物&#xff0c;阻塞DDL&#xff0c;继而阻塞所有同表的后续操作,查看未提交事务的进程2.存着正在进行的线程数据。3.根据processlist表中的id杀掉未释放的线程4.查看正在使用的表5.mysql为什么state会有waiting for handler commit6.什么情况导…

处理耗时任务

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 namespace 处理耗时任务 {public partial class Form1 : Form{public Form1(){InitializeComponent();}bool IsRun false;private string path Directory.GetCurrentDirectory() "\\古诗词.txt";private…

虚拟机怎么额外搭建两个Redis节点,配置多个 Redis 实例

前提条件 在开始之前&#xff0c;请确保你已经具备以下条件&#xff1a; 一台已安装 Redis 的虚拟机。虚拟机上已安装基本的 Linux 工具&#xff08;例如 FinalShell&#xff09;。 步骤二&#xff1a;配置额外的 Redis 实例 接下来&#xff0c;我们将配置两个新的 Redis 实…

鸿蒙原生应用元服务开发-位置服务申请权限

申请位置权限开发指导 场景概述 应用在使用位置服务系统能力前&#xff0c;需要检查是否已经获取用户授权访问设备位置信息。如未获得授权&#xff0c;可以向用户申请需要的位置权限。 系统提供的定位权限有&#xff1a; ohos.permission.LOCATION&#xff1a;用于获取精准位置…

机器学习python实践——由特征选择引发的关于卡方检验的一些个人思考

最近在用python进行机器学习实践&#xff0c;在做到特征选择这一部分时&#xff0c;对于SelectPercentile和SelectKBest方法有些不理解&#xff0c;所以去了查看了帮助文档&#xff0c;但是在帮助文档的例子中出现了"chi2"&#xff0c;没接触过&#xff0c;看过去就更…

垃圾佬的狂欢!3元/月开Minecraft国际服务器全流程教程

大家好&#xff01;我是ErikTse&#xff0c;一名生活在捡垃圾区的UP主&#xff0c;相信不少点进本文的朋友们跟我一样&#xff0c;在小时候都有一个当腐竹&#xff08;MC服主&#xff09;的梦&#xff0c;可惜那时还小&#xff0c;不懂网络更不懂技术&#xff0c;只有一颗爱玩的…

c++里 lamda 表达式,其实被编译器处理为匿名类,并实例化为匿名对象

该匿名对象定义了括号 () 运算符函数&#xff0c;所以可以像函数一样被调用。 lamda 表达式必须在函数作用域中定义。通过按值捕获或按引用捕获&#xff0c;可以使用所在函数中定义的变量。在类的成员函数中定义的 lamda 表达式&#xff0c;若捕获了 this &#xff0c;则可以修…

配置OSPF认证(华为)

#交换设备 配置OSPF认证-基于华为路由器 OSPF&#xff08;开放最短路径优先&#xff09;是一种内部网关协议&#xff08;IGP&#xff09;&#xff0c;用于在单一自治系统&#xff08;AS&#xff09;内决策路由。OSPF认证功能是路由器中的一项安全措施&#xff0c;它的主要用途…

B-splines曲线的绘制(Matlab)

虽然在这个链接三次 Bspline(B样条曲线) NURBS曲线的绘制 matlab_三次b样条曲线的绘制-CSDN博客中我们介绍了NURBS曲线&#xff0c;然而有时候我们通过B-spline曲线也能够解决问题。B-spline曲线作为NURBS曲线的一种特例&#xff0c;这里给出均匀B-spline曲线的表达式&#xff…

基于PHP的草莓种植信息管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的草莓种植管理系统 一 介绍 此草莓种植管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端采用jquery.js和kindeditor在线HTML编辑器。系统角色分为用户和管理员。 技术栈&#xff1a;phpmysqljquery.jsphpstudyvsco…

【Windows系统】文件操作出现“文件访问被拒绝”弹窗问题

环境 系统&#xff1a;win10x64 版本&#xff1a;1709 问题 重命名系统文件夹文件&#xff0c;有时会出现【文件访问被拒绝】的弹窗&#xff0c;导致操作失败。 如何才能避免弹窗&#xff0c;成功操作&#xff1f; 解决方法 前提&#xff1a;实施以下解决&#xff0c;首先…

Vue自定义长按指令

新建文件longpress.ts文件 // longpress.ts import { DirectiveBinding } from vue const longpress {beforeMount(el: any, binding: DirectiveBinding) {const cb binding.valueconst duration binding.arg || 800 // 长按等待时间let timer: number | null nulllet is…

这些数据可被Modbus采集,你还不知道???

为什么要用Modbus采集模块 Modbus采集模块之所以被广泛使用&#xff0c;是因为它提供了标准化的通信协议&#xff0c;确保了不同设备间的兼容性。它支持多种通信方式&#xff0c;易于实现&#xff0c;并且能够适应不同的网络环境。Modbus模块能够收集和传输各种工业数据&#x…

从荒漠到绿洲:可视化技术助力可持续农业

运用图扑可视化技术优化荒漠农业管理&#xff0c;通过实时监控与数据分析提高土地资源利用和生产效率&#xff0c;实现生态可持续发展。

解决Java项目运行时错误:“Command line is too long”

在开发Java应用的过程中&#xff0c;你可能偶尔会遇到“Error running ‘Application’: Command line is too long”的问题。这是因为Java虚拟机&#xff08;JVM&#xff09;在启动时&#xff0c;如果传递给它的类路径&#xff08;classpath&#xff09;过长&#xff0c;超过了…