您现在的位置是:首页 > Javascript
当前栏目
vue实现多个倒计时同步刷新
2023-03-07 09:44:50 时间
使用场景:
一般多个定时器同时使用的场景主要应用在限时活动或者限时抢购商品等,如一个页面存在多个商品,且每个商品都有独立的限时抢购时间,因此就会遇到多个定时器同步刷新倒计时
限时抢购使用场景
这次就用简单数据来模拟多个定时器同步刷新实现效果,效果不同原理一样
模拟效果
html
节日名称:{{item.name}}
节日时间:{{item.time}}
剩余时间:{{item.residueTime}}
js
var timeId
export default {
name: '',
data () {
return {
timeLists: []
}
},
created () { // 实例被创建之后执行代码
this.getTimeList()
},
beforeDestroy () { //组件的销毁
clearInterval(timeId) // 清除定时器
timeId=null
},
methods: {
//获取各节日时间
getTimeList () {
let timeArr = [{ //模拟数据 届时即为后端请求接口获取
name: '元旦 ', time: '2020-01-01 00:00:00', residueTime: '' }, {
name: '新年 ', time: '2020-01-25 00:00:00', residueTime: '' }, {
name: '元宵节', time: '2020-02-08 00:00:00', residueTime: '' }]
this.timeLists = timeArr
this.setIntervalTime() // 调取倒计时
},
// 设置定时器做倒计时
setIntervalTime () {
timeId = setInterval(() => {
this.timeLists.forEach(item => {
item.residueTime = this.getResidueTime(item.time)
})
}, 1000)
},
// 获取剩余时间
getResidueTime (end) {
let nowtime = new Date().getTime(); // 当前时间 毫秒数
let endTime = Date.parse(new Date(end.replace(/-/g, "/"))); //结束时间 毫秒数
let totalSeconds = (endTime - nowtime) / 1000; // 结束时间-当前时间 = 剩余多少时间
let day = parseInt(totalSeconds / 3600 / 24); //天
let hour = parseInt((totalSeconds / 3600) % 24); //时
let minute = parseInt((totalSeconds / 60) % 60); //分
let second = parseInt(totalSeconds % 60); //秒
let residueTime ="倒计时:" + day + "天 " + hour + "时 " + minute + "分 " + second + "秒";
hour = this.addZero(hour)
minute = this.addZero(minute)
second = this.addZero(second)
if (totalSeconds
相关文章
- 鲜为人知但很有用的 HTML 属性
- 翻转再翻转!有意思的水平横向溢出滚动
- 自定义计数器小技巧!CSS 实现长按点赞累加动画
- 过五关!React高频面试题指南
- 软件开发中的十个认知偏差
- 不需要 JS!仅用 CSS 也能达到监听页面滚动的效果!
- 一文读懂TypeScript类型兼容性
- Vue 的响应式原则与双向数据绑定
- 快速掌握 TypeScript 新语法:Infer Extends
- JWT教你如何证明你是我的人!
- 一篇带给你 V8 GC 的实现
- 面试官:请使用JS完成一个LRU缓存?
- 通过可视化来学习JavaScript事件循环
- 新的跨域策略:使用 COOP、COEP 为浏览器创建更安全的环境
- 为什么有人说 vite 快,有人却说 vite 慢?
- 种草 Vue3 中几个好玩的插件和配置
- 超全面的前端工程化配置指南
- Vue 状态管理未来样子
- Volatile关键字能保证原子性么?
- 面试突击:SpringBoot 有几种读取配置文件的方法?