JS-WebAPIS(四)

日期对象(常用)

• 实例化

  • 在代码中发现了 new 关键字时,一般将这个操作称为实例化
  • 创建一个时间对象并获取时间

  • 获得当前时间

  • 获得指定时间 

• 时间对象方法

使用场景:因为日期对象返回的数据我们不能直接使用,所以需要转换为实际开发中常用的格式

• 时间戳

使用场景: 如果计算倒计时效果,前面方法无法直接计算,需要借助于时间戳完成

什么是时间戳

  • 是指1970年01月01日00时00分00秒起至现在的毫秒数,它是一种特殊的计量时间的方式

算法:

  • 将来的时间戳 - 现在的时间戳 = 剩余时间毫秒数
  • 剩余时间毫秒数 转换为 剩余时间的 年月日时分秒 就是 倒计时时间
  • 比如 将来时间戳 2000ms - 现在时间戳 1000ms = 1000ms
  • 1000ms 转换为就是 0小时0分1秒

三种方式获取时间戳:

  • 使用 getTime() 方法

  • 简写 +new Date()

  • 使用 Date.now() 

案例:倒计时案例

 需求:计算到下课还有多少时间
分析:
①:用将来时间减去现在时间就是剩余的时间
②:核心: 使用将来的时间戳减去现在的时间戳
③:把剩余的时间转换为 天 时 分 秒

注意:
1. 通过时间戳得到是毫秒,需要转换为秒在计算
2. 转换公式:

  • d = parseInt(总秒数/ 60/60 /24); // 计算天数
  • h = parseInt(总秒数/ 60/60 %24) // 计算小时
  • m = parseInt(总秒数 /60 %60 ); // 计算分数
  • s = parseInt(总秒数%60); // 计算当前秒数

<!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>.box {width: 250px;height: 300px;background-color: rgb(143, 5, 5);margin: 100px auto;text-align: center;color: #fff;border: 1px solid transparent;}.box p:nth-of-type(1){margin: 20px;}.box p:nth-of-type(2){margin-top: 80px;font-size: 20px;}.box h3 {font-size: 30px;}.datetime span {display: inline-block;width: 30px;height: 30px;line-height: 30px;background: rgba(0, 0, 0, .7);}</style>
</head>
<body><div class="box"><p>今天是2024年2月22日</p><h3>过年倒计时</h3><div class="datetime"><span class="day">22</span>天<span class="h">22</span>: <span class="m">22</span>: <span class="s">22</span></div><p>2024.2.9过年</p></div><script>/* 知识点复习:1 时间对象Date()的使用 --获取当前时间2 定时器-间歇函数     --间隔一秒调用函数,刷新时间3 获取dom元素4 复习Math内置对象*///页面初始化第一次getCountTime()//调用定时器不断刷新时间setInterval(getCountTime,1000)function getCountTime(){//实例化时间对象const date = new Date()// const today = date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate()const p1 = document.querySelector('.box p:nth-of-type(1)')p1.innerHTML = `今天是${date.getFullYear()}年${date.getMonth()+1}月${date.getDate()}日`const day = new Date('2024.2.9') - date// let a = new Date(`${date}`)// console.log(Math.ceil(day/24/60/60/1000))// console.log(a.getDate())// console.log(a.getHours())// console.log(a.getMinutes())// console.log(a.getSeconds())document.querySelector('.day').innerHTML = Math.floor(day/24/60/60/1000)document.querySelector('.h').innerHTML = Math.floor(day/60/60/1000%24)document.querySelector('.m').innerHTML = Math.floor(day/60/1000%60)document.querySelector('.s').innerHTML = Math.floor(day/1000%60)//修改盒子颜色// console.log(getRandomColor(false))document.querySelector('.box').style.backgroundColor = getRandomColor(false)}function getRandomColor(flag = true){//如果flag=true  则返回#ffffff形式的if(flag){let arr = ['1','2','3','4','5','6','7','8','9','a','b','c','d','e','f']let result ='#'for(let i = 1;i<=6;i++){let random = Math.floor(Math.random()*arr.length)result+=arr[random]}return result}else{//如果flag=false   则返回rag(255,255,255)形式的let r = Math.floor(Math.random()*256)let g = Math.floor(Math.random()*256)let b = Math.floor(Math.random()*256)return `rgb(${r},${g},${b})`}}</script>
</body>
</html>

 


节点操作(常用)

• DOM 节点

DOM树里每一个内容都称之为节点

  • 节点类型()

 总结:

1. 什么是DOM 节点?

  •  DOM树里每一个内容都称之为节点

2. DOM节点的分类?

  •  元素节点 比如 div标签
  •  属性节点 比如 class属性
  •  文本节点 比如标签里面的文字

3. 我们重点记住那个节点?

  •  元素节点
  •  可以更好的让我们理清标签元素之间的关系

• 查找节点

父节点查找:

  • parentNode 属性
  • 返回最近一级的父节点 找不到返回为null

子节点查找: 

  • childNodes

获得所有子节点、包括文本节点(空格、换行)、注释节点等

  • children 属性 (重点)
  1. 仅获得所有元素节点(只获取html标签)
  2. 返回的还是一个伪数组

兄弟节点查找: 

1. 下一个兄弟节点

  • nextElementSibling 属性

2. 上一个兄弟节点

  • previousElementSibling 属性

• 增加节点(重点)

场景:

 

1.创建节点

  • 创造出一个新的网页元素,再添加到网页内,一般先创建节点,然后插入节点
  • 创建元素节点方法:

 2.追加节点

  • 要想在界面看到,还得插入到某个父元素中
  • 插入到父元素的最后一个子元素:

  • 插入到父元素中某个子元素的前面 

 

• 删除节点

  • 若一个节点在页面中已不需要时,可以删除它
  • 在 JavaScript 原生DOM操作中,要删除元素必须通过父元素删除
  • 语法

注:

  •  如不存在父子关系则删除不成功
  • 删除节点和隐藏节点(display:none) 有区别的: 隐藏节点还是存在的,但是删除,则从html中删除节点 

M端事件(移动端)

移动端也有自己独特的地方。比如触屏事件 touch(也称触摸事件),Android 和 IOS 都有。

  • 触屏事件 touch(也称触摸事件),Android 和 IOS 都有。
  • touch 对象代表一个触摸点。触摸点可能是一根手指,也可能是一根触摸笔。触屏事件可响应用户手指(或触控笔 )对屏幕或者触控板操作。
  • 常见的触屏事件如下:

JS插件(swiper)

  • 插件: 就是别人写好的一些代码,我们只需要复制对应的代码,就可以直接实现对应的效果
  • 学习插件的基本过程
  • 熟悉官网,了解这个插件可以完成什么需求           https://www.swiper.com.cn/
  • 看在线演示,找到符合自己需求的demo                https://www.swiper.com.cn/demo/index.html
  • 查看基本使用流程                                                https://www.swiper.com.cn/usage/index.html
  • 查看APi文档,去配置自己的插件                           https://www.swiper.com.cn/api/index.html
  • 注意: 多个swiper同时使用的时候, 类名需要注意区分

在官网下载后,从这个package夹中找到css和js文件,引入到项目中就可以用了,具体看文档

综合案例

学生信息表案例

说明:

本次案例,我们尽量减少dom操作,采取操作数据的形式

增加和删除都是针对于数组的操作,然后根据数组数据渲染页面

核心思路:
①: 声明一个空的数组
②: 点击录入,根据相关数据,生成对象,追加到数组里面
③: 根据数组数据渲染页面-表格的 行
④: 点击删除按钮,删除的是对应数组里面的数据
⑤: 再次根据数组的数据,渲染页面

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>学生信息管理</title><link rel="stylesheet" href="css/index.css" />
</head><body><h1>新增学员</h1><form class="info" autocomplete="off">姓名:<input type="text" class="uname" name="uname" required />年龄:<input type="text" class="age" name="age" required />性别:<select name="gender" class="gender"><option value="男">男</option><option value="女">女</option></select>薪资:<input type="text" class="salary" name="salary" required />就业城市:<select name="city" class="city"><option value="北京">北京</option><option value="上海">上海</option><option value="广州">广州</option><option value="深圳">深圳</option><option value="曹县">曹县</option></select><button class="add">录入</button></form><h1>就业榜</h1><table><thead><tr><th>学号</th><th>姓名</th><th>年龄</th><th>性别</th><th>薪资</th><th>就业城市</th><th>操作</th></tr></thead><tbody><!-- <tr><td>1001</td><td>欧阳霸天</td><td>19</td><td>男</td><td>15000</td><td>上海</td><td><a href="javascript:">删除</a></td></tr> --></tbody></table><script>/* 本案例使用到的知识点1 dom对象的获取2 数组操作3 事件流-阻止默认行为4 对象的操作5 事件绑定6 事件对象 e的用法7 对象的自定义属性*/const add = document.querySelector('.add')const info = document.querySelector('.info')const tbody = document.querySelector('tbody')const uname = document.querySelector('.uname')const age = document.querySelector('.age')const gender = document.querySelector('.gender')const salary = document.querySelector('.salary')const city = document.querySelector('.city')const arr = []  //初始化数组用于存储数据const items = document.querySelectorAll('[name]')//1 为表单设置提交事件  //事件类型是提交事件info.addEventListener('submit', function (e) {//1.1 阻止表单默认行为,不然点击后会将内容提交给自己(这里的对象需要填写表单)e.preventDefault()console.log(11)//1.2初始化对象const obj = {stuId: arr.length + 1,uname: uname.value,age: age.value,gender: gender.value,salary: salary.value,city: city.value}//3 对表单元素进行验证for (let i = 0; i < items.length; i++) {if (items[i].value === '') {alert('内容不能为空!')//结束函数return}}//1.3将对象追加到数组种arr.push(obj)//重置表单this.reset()// console.log(arr)//1.4显然表单render()})function render() {//每次调用清空原来tbody种的元素tbody.innerHTML = ''for (let i = 0; i < arr.length; i++) {//创建trconst tr = document.createElement('tr')tr.innerHTML = `<td>${arr[i].stuId}</td><td>${arr[i].uname}</td><td>${arr[i].age}</td><td>${arr[i].gender}</td><td>${arr[i].salary}</td><td>${arr[i].city}</td><td><a href="javascript:" data-id=${i}>删除</a></td>`//将填入追加到tbody种tbody.appendChild(tr)}}//2点击a元素删除数组对象  --使用事件委托tbody.addEventListener('click', function (e) {//2.1只有点击a,才做操作if (e.target.tagName === 'A') {// console.log(111)//2.2获取a种的自定义属性值//  console.log(e.target.dataset.id)//根据自定义属性的值删除数组元素arr.splice(e.target.dataset.id, 1)//2.3删除操作后重新渲染render()}})</script></body></html>

 

 

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

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

相关文章

web漏洞总结大全(基础)

前言 本文章是和cike_y师傅一起写的&#xff0c;cike_y博客&#xff1a;https://blog.csdn.net/weixin_53912233?typeblog 也欢迎大家对本文章进行补充和指正&#xff0c;共同维护这个项目&#xff0c;本文的github项目地址&#xff1a; https://github.com/baimao-box/Sum…

【机器学习入门】机器学习基础概念与原理

*&#xff08;本篇文章旨在帮助新手了解机器学习的基础概念和原理&#xff0c;不深入讨论算法及核心公式&#xff09; 目录 一、机器学习概念 1、什么是机器学习&#xff1f; 2、常见机器学习算法和模型 3、使用Python编程语言进行机器学习实践 4、机器学习的应用领域 二…

ssh: connect to host github.com port 22: Connection refused

ssh: connect to host github.com port 22: Connection refused 问题现象 本文以Windows系统为例进行说明&#xff0c;在个人电脑上使用Git命令来操作GitHub上的项目&#xff0c;本来都很正常&#xff0c;突然某一天开始&#xff0c;会提示如下错误ssh: connect to host gith…

[Android]实现一个权限申请类

[Android]实现一个权限申请类 导言 在引入了动态权限申请之后&#xff0c;Android的权限申请就变得尤为繁琐&#xff0c;若是按照原有的方法一板一眼地进行申请&#xff0c;样板代码未免太多。因此本篇文章就使用ActivityResult API&#xff0c;来实现一个简单的权限申请类来帮…

解决 conda新建虚拟环境只有一个conda-meta文件&conda新建虚拟环境不干净

像以前一样通过conda 新建虚拟环境时发现环境一团糟&#xff0c;首先新建虚拟环境 conda create -n newenv这时候activate newenv&#xff0c;通过pip list&#xff0c;会发现有很多很多的包&#xff0c;都是我在其他环境用到的。但诡异的是&#xff0c;来到anaconda下env的目…

福昕软件的使用

快捷操作 快捷键 快捷键功能备注Ctrl P打印 Ctrl W关闭 Ctrl B书签 鼠标放菜单栏&#xff0c;单击右键即可导入/导出 自定义菜单栏文件-->偏好设置-->文档 1、多实例&#xff1a;单击PDF后均重新打开一个新界面。

【51单片机Keil+Proteus8.9+ADC0804】ADC实验 模拟转数字实验

一、实验名称 ADC实验 模拟转数字实验 二、设计思路 电路设计 1.选用AT89C51单片机作为电路核心单元&#xff0c;外接8位单通道AD转换器ADC0804芯片和LM016L显示器以及滑动变阻器等其它常用元器件构成电路。 2.将ADC0804芯片的控制引脚RD,WR,INTR接到AT89C51芯片对应引脚&…

SpringCloud-高级篇(十四)

缓存的作用是其实就是为了减轻对数据库的压力&#xff0c;缩短服务响应的时间&#xff0c;从而提高整个服务的并发能力&#xff0c;Redis单节点并发其实已经很高了&#xff0c;但是它依然有自己的上限&#xff0c;随着互联网的发展&#xff0c;用户低量越来越大&#xff0c;想淘…

51单片机原理及应用张毅刚版课后习题以及答案

AT89S51单片机内部集成了哪些外围功能部件 ①8位微处理器CPU ②数据存储器 128B RAM ③程序存储器 ④4个8位可编程并行I/O口 ⑤1个全双工的异步串行口 ⑥2个可编程的16位定时器/计数器 ⑦1个看门狗定时器WDT ⑧中断系统具有五个中断源 五个中断向量 ⑨特殊功能寄存器SFR 26个…

vulnhub靶机BlueSky

下载地址&#xff1a;BlueSky: 1 ~ VulnHub 主机发现 目标177 端口扫描 服务扫描 漏洞扫描 看web就不用我多说了吧 默认页面&#xff0c;爆破吧 这个也没有扫出来 有manger/html但是没有任何返回值 应该是限制本地访问或者禁掉了 网上直接用struts2-showcase这个洞了 cve-20…

智能AI写作到底怎么样?这几款AI写作非常好用

近年来&#xff0c;人工智能&#xff08;AI&#xff09;技术的快速发展已经渗透到各个领域&#xff0c;包括写作领域。AI写作软件通过模仿指定作家的风格和语言&#xff0c;能够生成高质量的文章。这种技术的出现引发了广泛的讨论和争议。本文将探讨AI写作的优点&#xff0c;并…

flutter获取地理定位:geolocator依赖详细用法

本文使用geolocator插件实现app物理定位功能。 该插件的主要功能有&#xff1a; 获取最后已知位置&#xff1b;获取设备当前位置&#xff1b;获取连续的位置更新&#xff1b;检查设备是否启用了定位服务&#xff1b;计算两个地理坐标之间的距离&#xff08;米&#xff09;&am…