Dom节点&移动端滑动
1.日期对象
日期对象:用来表示时间的对象
作用:可以得到当前系统时间
1.1实例化
在代码中发现了 new 关键字时,一般将这个操作称为实例化
创建一个时间对象并获取时间
获得当前时间
获得指定时间
1.2时间对象方法
使用场景:因为日期对象返回的数据我们不能直接使用,所以需要转换为实际开发中常用的格式
案例:
获得当前的时间:
法一:
<!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>div {width: 300px;height: 40px;border: 1px solid pink;text-align: center;line-height: 40px;}</style>
</head><body><div></div><script>const div = document.querySelector('div')function getMyDate() {const date = new Date()let h = date.getHours()let m = date.getMinutes()let s = date.getSeconds()h = h < 10 ? '0' + h : hm = m < 10 ? '0' + m : ms = s < 10 ? '0' + s : sreturn `今天是: ${date.getFullYear()}年${date.getMonth() + 1}月${date.getDate()}号 ${h}:${m}:${s}`}div.innerHTML = getMyDate()setInterval(function () {div.innerHTML = getMyDate()}, 1000)</script>
</body></html>
法二:
<!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>div {width: 300px;height: 40px;border: 1px solid pink;text-align: center;line-height: 40px;}</style>
</head><body><div></div><script>const div = document.querySelector('div')// 得到日期对象const date = new Date()div.innerHTML = date.toLocaleString() // 2022/4/1 09:41:21setInterval(function () {const date = new Date()div.innerHTML = date.toLocaleString() // 2022/4/1 09:41:21}, 1000)// div.innerHTML = date.toLocaleDateString() // 2022/4/1// div.innerHTML = date.toLocaleTimeString() // 2022/4/1</script>
</body></html>
1.3时间戳
使用场景:如果计算倒计时效果,前面方法无法直接计算,需要借助于时间戳完成
什么是时间戳:
是指1970年01月01日00时00分00秒起至现在的毫秒数,它是一种特殊的计量时间的方式
算法:
- 将来的时间戳 - 现在的时间戳 = 剩余时间毫秒数
- 剩余时间毫秒数 转换为 剩余时间的 年月日时分秒 就是 倒计时时间
- 比如 将来时间戳 2000ms - 现在时间戳 1000ms = 1000ms
- 1000ms 转换为就是 0小时0分1秒
三种方式获取时间戳:
1. 使用 getTime() 方法
2. 简写 +new Date()
3. 使用 Date.now()
无需实例化
但是只能得到当前的时间戳, 而前面两种可以返回指定时间的时间戳
1.实例化日期对象怎么写?
new Date()
2. 日期对象方法里面月份和星期有什么注意的?
月份是0~11, 星期是 0~6
3. 获取时间戳有哪三种方式?重点记住那个?
date.getTime() +new Date() Date.now()
重点记住 +new Date() 因为可以返回当前时间戳或者指定的 时间戳
案例:
APIs-day4-118-倒计时案例的制作_哔哩哔哩_bilibili
2.节点操作
2.1DOM 节点
DOM节点
DOM树里每一个内容都称之为节点
节点类型
- 元素节点【所有的标签 比如 body、 div ; html 是根节点】
- 属性节点【所有的属性 比如 href 】
- 文本节点【 所有的文本 】
- 其他
2.2查找节点
关闭二维码案例: 点击关闭按钮, 关闭的是二维码的盒子, 还要获取erweima盒子
思考: 关闭按钮 和 erweima 是父子关系,所以,点击关闭按钮, 直接关闭它的爸爸,就无需获取erweima元素了
节点关系:针对的找亲戚返回的都是对象
父节点 子节点 兄弟节点
父节点查找
- parentNode 属性
- 返回最近一级的父节点 找不到返回为null
子节点查找
childNodes 【获得所有子节点、包括文本节点(空格、换行)、注释节点等】
children 属性 (重点) 【仅获得所有元素节点,返回的还是一个伪数组】
兄弟关系查找
1. 下一个兄弟节点 【 nextElementSibling 属性】
2. 上一个兄弟节点 【previousElementSibling 属性】
2.3增加节点
很多情况下,我们需要在页面中增加元素,比如,点击发布按钮,可以新增一条信息 ,一般情况下,我们新增节点,按照如下操作:创建一个新的节点,把创建的新的节点放入到指定的元素内部。
1.创建节点,即创造出一个新的网页元素,再添加到网页内,一般先创建节点,然后插入节点
创建元素节点方法:
2.追加节点,要想在界面看到,还得插入到某个父元素中
插入到父元素的最后一个子元素:
插入到父元素中某个子元素的前面
特殊情况下,我们新增节点,按照如下操作:
复制一个原有的节点,把复制的节点放入到指定的元素内部
克隆节点
- cloneNode会克隆出一个跟原标签一样的元素,括号内传入布尔值
- 若为true,则代表克隆时会包含后代节点一起克隆
- 若为false,则代表克隆时不包含后代节点
- 默认为false
2.4删除节点
若一个节点在页面中已不需要时,可以删除它
在 JavaScript 原生DOM操作中,要删除元素必须通过父元素删除
语法:
注:
如不存在父子关系则删除不成功 【必须是父删子】
删除节点和隐藏节点(display:none) 有区别的: 隐藏节点还是存在的,但是删除,则从html中删除节点
3.M端事件
移动端也有自己独特的地方。比如触屏事件 touch(也称触摸事件),Android 和 IOS 都有。
触屏事件 touch(也称触摸事件),Android 和 IOS 都有。
touch 对象代表一个触摸点。触摸点可能是一根手指,也可能是一根触摸笔。触屏事件可响应用户手指(或触控笔 )对屏幕或者触控板操作。
常见的触屏事件如下
4.JS插件
插件: 就是别人写好的一些代码,我们只需要复制对应的代码,就可以直接实现对应的效果
学习插件的基本过程
- 熟悉官网,了解这个插件可以完成什么需求 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同时使用的时候, 类名需要注意区分
5.综合案例
APIs-day4-124-今日综合案例-学生信息表上集_哔哩哔哩_bilibili
APIs-day4-125-今日综合案例-学生信息表下集_哔哩哔哩_bilibili
说明:
尽量减少dom操作,采取操作数据的形式
增加和删除都是针对于数组的操作,然后根据数组数据渲染页面
核心思路:
①: 声明一个空的数组
②: 点击录入,根据相关数据,生成对象,追加到数组里面
③: 根据数组数据渲染页面-表格的 行
④: 点击删除按钮,删除的是对应数组里面的数据
⑤: 再次根据数组的数据,渲染页面