vue实现倒计时的插件 时间戳 刷新 跳转 都不影响

    选择打赏方式

本站已不再更新,最新资源请前往zcjun.com获取!

工作当中需要开发一个倒计时插件,发现好多倒计时的插件,刷新都会变成从头再来,下面这个倒计时的插件 时间戳 刷新 跳转 都不影响,测试已经通过,直接上代码

如下是组件代码:

<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>


引入上面代码之后 换要在vue的methods里加上callback回调函数
ednTime 是时间结束之后的时间戳  callback是结束之后的回调  endText是结束之后的文字显示!


版权声明:若无特殊注明,本文皆为《 子成君 》原创,转载请保留文章出处。
本文链接:vue实现倒计时的插件 时间戳 刷新 跳转 都不影响 https://old.zcjun.com/learn/531.html
百度收录:本文已被百度收录点击查看详情!
本文到此结束

热门推荐

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

爱你允悲悲伤吃惊委屈可怜憧憬吃瓜大哭开心坏笑笑哭哼打哈欠鼓掌乖嘘阴险日了狗费解挤眼滑稽666比心


既然没有吐槽,那就赶紧抢沙发吧!