zoukankan      html  css  js  c++  java
  • js之封装(秒数)转化为时分秒倒计时组件 vue版本

    效果如上图;

    <!--
     * @Author: lhl
     * @Date: 2021-09-09 21:43:00
     * @LastEditors: lhl
     * @LastEditTime: 2021-09-09 22:21:55
     * @Description:  组件调用 <Test :remainTime="5000"></Test>
    -->
    <template>
      <span>{{
        hour
          ? hourString + ':' + minuteString + ':' + secondString
          : minuteString + ':' + secondString
      }}</span>
    </template>
    
    <script>
    export default {
      data() {
        return {
          hour: '',
          minute: '',
          second: '',
          timer: ''
        }
      },
      props: {
        remainTime: {
          // 倒计时间总秒数
          default: ''
        }
      },
      mounted() {
        if (this.remainTime > 0) {
          this.hour = Math.floor((this.remainTime / 3600) % 24)
          this.minute = Math.floor((this.remainTime / 60) % 60)
          this.second = Math.floor(this.remainTime % 60)
          this.countDowm()
        } else {
          this.minute = 0
          this.second = 0
        }
      },
      methods: {
        countDowm() {
          var self = this
          clearInterval(this.timer)
          this.timer = setInterval(function () {
            if (self.hour === 0) {
              if (self.minute !== 0 && self.second === 0) {
                self.second = 59
                self.minute -= 1
              } else if (self.minute === 0 && self.second === 0) {
                self.second = 0
                self.$emit('countDowmEnd', true)
                clearInterval(self.timer)
              } else {
                self.second -= 1
              }
            } else {
              if (self.minute !== 0 && self.second === 0) {
                self.second = 59
                self.minute -= 1
              } else if (self.minute === 0 && self.second === 0) {
                self.hour -= 1
                self.minute = 59
                self.second = 59
              } else {
                self.second -= 1
              }
            }
          }, 1000)
        },
        formatNum(num) {
          return num < 10 ? '0' + num : '' + num
        }
      },
      computed: {
        hourString() {
          return this.formatNum(this.hour)
        },
        minuteString() {
          return this.formatNum(this.minute)
        },
        secondString() {
          return this.formatNum(this.second)
        }
      }
    }
    </script>

    组件有不完善的地方请多多指出;多数场景自己已经测过了;

     

  • 相关阅读:
    不怕上不了 Android developers
    不花钱的可靠性设计
    linux2.6 内核特性配置
    Linux动态库的编译与使用 转载
    多线程使用互斥锁的C范例
    TSLIB 分析
    Notepad++中文版下载 以及HEX显示
    C程序实现在lcd 上全屏写 blue 色 及获取fb信息
    pthread_cond_wait的spurious wakeup问题
    查看linux内存条数的命令与清理内存使用
  • 原文地址:https://www.cnblogs.com/lhl66/p/15249360.html
Copyright © 2011-2022 走看看