vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
程序员文章站
2023-10-31 09:33:52
我发现好多倒计时的插件,刷新都会变成从头再来,于是自己用vue2.0写了一个,测试通过,直接上代码
如下是组件代码:
&...
我发现好多倒计时的插件,刷新都会变成从头再来,于是自己用vue2.0写了一个,测试通过,直接上代码
如下是组件代码:
<template> <span :endtime="endtime" :callback="callback" :endtext="endtext"> <slot> {{content}} </slot> </span> </template> <script> export default { data(){ return { content: '', } }, props:{ endtime:{ type: string, default :'' }, endtext:{ type : string, default:'已结束' }, callback : { type : function, default :'' } }, mounted () { this.countdowm(this.endtime) }, methods: { countdowm(timestamp){ let self = this; let timer = setinterval(function(){ let nowtime = new date(); let endtime = new date(timestamp * 1000); let t = endtime.gettime() - nowtime.gettime(); if(t>0){ let day = math.floor(t/86400000); let hour=math.floor((t/3600000)%24); let min=math.floor((t/60000)%60); let sec=math.floor((t/1000)%60); hour = hour < 10 ? "0" + hour : hour; min = min < 10 ? "0" + min : min; sec = sec < 10 ? "0" + sec : sec; let format = ''; if(day > 0){ format = `${day}天${hour}小时${min}分${sec}秒`; } if(day <= 0 && hour > 0 ){ format = `${hour}小时${min}分${sec}秒`; } if(day <= 0 && hour <= 0){ format =`${min}分${sec}秒`; } self.content = format; }else{ clearinterval(timer); self.content = self.endtext; self._callback(); } },1000); }, _callback(){ if(this.callback && this.callback instanceof function){ this.callback(...this); } } } } </script>
下面是调用代码:
<count-down endtime="1490761620" :callback="callback" endtext="已经结束了"></count-down>
edntime 是时间结束之后的时间戳 callback是结束之后的回调 endtext是结束之后的文字显示!
以上所述是小编给大家介绍的vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响),希望对大家有所帮助