Web APIs学习 --DOM(二)
日期对象
用来表示时间的对象,可以得到当前系统时间。
实例化
1 | const date = new Date() // 获取当前时间 |
时间对象方法
返回的数据不适用于直接使用,该怎么转换为实际开发中常用的格式呢?
1 | const date = new Date() |
常见的拼接方式,写成函数的格式
1 | function formatDate(date) { |
如果想让月份和日期显示两位数,可以使用padStart方法,这个方法是ES6新增的方法,用于字符串补全长度。第一个参数是字符串的最小长度,第二个参数是用来补全的字符串。
1 | function formatDate(date) { |
怎么才能让时间实时更新呢?可以使用定时器,每隔一秒更新一次时间。
1 | setInterval(() => { |
还有一些内置的格式化方法,比如toLocaleString方法,可以根据本地时间格式化日期。
1 | const date = new Date() |
时间戳
时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总秒数,可以用来表示一个时间点。
使用场景比如说要计算倒计时效果,可以使用时间戳来计算。算法是:目标时间戳减去当前时间戳,得到的是毫秒数,再除以1000得到秒数。
1 | const targetTime = new Date('2021-01-01').getTime() |
还有更简洁的办法!下面是三个获取时间戳的方法,都是获取当前时间戳。
1 | const time1 = new Date().getTime() |
拿到相差的毫秒数后,可以转换为天、时、分、秒的格式。
1 | const targetTime = new Date('2021-01-01').getTime() |
节点操作
DOM节点
DOM节点是HTML文档中的元素,可以通过JS来操作DOM节点,比如增删改查。节点类型有:
- 元素节点:HTML标签
- 文本节点
- 属性节点
- 其他
查找节点
父节点
利用parentNode属性可以找到父节点,返回最近一级的父节点,找不到返回null。
1 | const parent = son.parentNode |
子节点
- 利用childNodes属性可以找到子节点,返回一个伪数组,包含所有子节点,包括文本节点和注释节点等。
- children属性只包含元素节点,不包含文本节点,返回的依旧是伪数组。
兄弟节点
- previousElementSibling属性可以找到前一个兄弟节点。
- nextElementSibling属性可以找到后一个兄弟节点。
增加节点
很多情况需要在页面中新增节点,比如点击发布按钮后新增一条信息。
两个步骤:创建节点、追加节点。
- createElement方法可以创建元素节点。
- appendChild方法可以追加节点,插入到某个父元素的最后。
- insertBefore方法可以插入到某个父元素的某个子元素前。
1
2
3
4
5// 1. 创建节点
const div = document.createElement('div')
// 2. 追加节点
document.body.appendChild(div)
// 父元素.insertBefore(新元素, 参考元素)
克隆节点
cloneNode方法可以克隆节点,参数是一个布尔值,true表示深拷贝,克隆节点及其子节点,false表示浅拷贝,只克隆节点。
1 | const div = document.createElement('div') |
删除节点
removeChild方法可以删除节点,参数是要删除的节点。
1 | // 父元素.removeChild(子元素) |
M端事件,移动端又一些独特的地方,比如触屏事件touch,可以响应用户手指或触控笔对屏幕或触控版的操作。
常见的touch事件有:touchstart、touchmove、touchend。
JS插件
插件就是别人写好的一些代码,我们只需要复制对应的代码,就可以直接实现对应的效果,比如轮播图、日历等。
swiper是一个轮播图插件,可以实现轮播图效果。
1 | <link ref="stylesheet" href = ./css/swiper.min.css> |