VUE实现倒计时30分钟

标签: 【Vue踩坑之路】  vue  倒计时

前言


在支付订单的业务场景下,通常会有一个支付倒计时的功能,今天我们就来实现一下

实现

  1. 首先,是两个div用来显示我们的剩余支付时间
<div style="font-size: 14px;color: #666;">剩余支付时间(超时自动关闭)</div>
<div class="time"><i class="el-icon-time"></i> {{min}}分钟 {{sec}}秒 </div>
  • 1
  • 2
  1. 然后,是倒计时函数countdown
//倒计时
countdown () {
      const end = Date.parse(new Date('2020-05-05 03:59:23'))
      const now = Date.parse(new Date())
      const msec = end - now

      console.log(msec)
      if(msec<0) return;

      let day = parseInt(msec / 1000 / 60 / 60 / 24)
      let hr = parseInt(msec / 1000 / 60 / 60 % 24)
      let min = parseInt(msec / 1000 / 60 % 60)
      let sec = parseInt(msec / 1000 % 60)
      this.day = day
      this.hr = hr > 9 ? hr : '0' + hr
      this.min = min > 9 ? min : '0' + min
      this.sec = sec > 9 ? sec : '0' + sec
      const that = this
      if(min>=0 && sec>=0){
        //倒计时结束关闭订单
        if(min==0 && sec==0){

          return
        }
        setTimeout(function () {
          that.countdown()
        }, 1000)
      }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  1. 最后,在mounted里事先执行countdown方法
mounted () {
  this.countdown()
}
  • 1
  • 2
  • 3

验证


现在,我们来验证一下是否成功


可以看到已经自动倒计时了

最后,如果本文对你有帮助的话点个关注吧!

版权声明:本文为Yanzudada原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:vue实现倒计时30分钟_一如年少丶的博客-CSDN博客_vue实现倒计时

Vue.js中实现倒计时功能,你可以使用`v-bind:key`和`v-if`配合计算属性来实时更新显示的时间。以下是简单的步骤: 1. 首先,在数据对象里定义倒计时相关的变量,比如`remainingTime`。 ```js data() { return { remainingTime: null, startTime: '2023-10-01T15:37:23', // 开始时间,格式为ISO字符串 }; }, ``` 2. 定义一个计算属性来获取剩余时间。这里可以使用`Date`对象和`Date.now()`方法来计算。 ```js computed: { formattedRemainingTime() { const start = new Date(this.startTime); const end = new Date(); if (!this.remainingTime) { this.calculateRemainingTime(start, end); } return this.formatTime(this.remainingTime); }, }, methods: { calculateRemainingTime(start, end) { this.remainingTime = Math.abs((start.getTime() - end.getTime()) / 1000); }, formatTime(time) { // 格式化成天小时分钟秒的形式 // 根据需求编写这部分代码 }, }, ``` 3. 在模板里,使用`v-bind:class`来控制倒计时的状态(比如未开始时隐藏),然后绑定计算属性`formattedRemainingTime`到显示文本。 ```html <div v-if="remainingTime"> <p :class="{ 'countdown-active': remainingTime > 0 }" v-text="formattedRemainingTime"></p> </div> <!-- 可选:当倒计时结束时显示提示 --> <div v-else>计时已结束</div> ``` 4. 更新倒计时时,可以在合适的生命周期钩子(如`mounted`)中启动计算过程。 ```js mounted() { this.calculateRemainingTime(); setInterval(() => { this.calculateRemainingTime(); }, 1000); }, ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值