• vue中使用倒计时


    短信验证码60s倒计时

    <template>
      <div>
        <button v-if="show" @click="getCode">获取验证码</button>
        <button v-if="!show">{{ times }}s</button>
      </div>
    </template>
    <script>
    export default {
      data() {
        return {
          times: 60,
          show:true
        }
      },
      methods: {
        getCode() {
          this.show = false
          this.timer = setInterval(()=>{
            this.times--
            if(this.times===0){
              this.show = true
              clearInterval(this.timer)
            }
          },1000)
        }
      }
    }
    </script>
    

      

    十五分钟倒计时

    <template>
      <div>
        <p>{{minute}}:{{second}}</p>
      </div>
    </template>
    
    <script type="text/ecmascript-6">
    
    export default {
        data () {
          return {
            minutes: 15,
            seconds: 0
          }
        },
        mounted () {
          this.add()
        },
        methods: {
          num: function (n) {
            return n < 10 ? '0' + n : '' + n
          },
          add() {
            var _this = this
            var time = window.setInterval(function () {
              if (_this.seconds === 0 && _this.minutes !== 0) {
                _this.seconds = 59
                _this.minutes -= 1
              } else if (_this.minutes === 0 && _this.seconds === 0) {
                _this.seconds = 0
                window.clearInterval(time)
    
              } else {
                _this.seconds -= 1
              }
            }, 1000)
          },
        },
        watch: {
          second: {
            handler (newVal) {
              this.num(newVal)
            }
          },
          minute: {
            handler (newVal) {
              this.num(newVal)
            }
          }
        },
        computed: {
          second: function () {
            return this.num(this.seconds)
          },
          minute: function () {
            return this.num(this.minutes)
          }
        }
    }
    </script>
    
    <style></style>
    

      

    五分钟倒计时 结束之后会再加五分钟倒计时 跳转页面不会重新开始

    <template>
      <div>
        <button @click="toPh">点击</button>
        <p>{{minute}}:{{second}}</p>
      </div>
    </template>
    
    <script type="text/ecmascript-6">
    export default {
        data () {
          return {
            minutes: '',
            seconds: '',
            tfcode: '',
            Num:''
          }
        },
        created () {
          this.TIme()
        },
        methods: {
          TIme (){ 
            var that = this
            this.Num =  localStorage.getItem('Num') 
            if(this.Num){
              let number = new Date()/1000 -that.Num
              if(that.Num != '' && number < 0){
                console.log('我还在五分钟内')
                var minutes = parseInt(number*-1/60)
                var seconds = parseInt(number*-1)-minutes*60
                that.minutes = minutes
                that.seconds = seconds
                this.setTime()
              }else{
                console.log('我超过了五分钟')
                let Num = Number(new Date()/1000)+(60*5)
                localStorage.setItem('Num',Num)
              }
            } else {
              this.setTime()
            }
          },
          setTime() {
            var that = this
            that.getTimer = setInterval(()=>{
              that.seconds-=1;
              if(that.seconds < 0){
                that.minutes-=1;
                that.seconds = 59
              }
              if(that.minutes == -1) {
                let Num = Number(new Date()/1000)+(60*5)
                localStorage.setItem('Num',Num)
                let number = new Date()/1000 - Num
                const minutes = parseInt(number*-1/60)
                const seconds = parseInt(number*-1)-minutes*60
                that.minutes = minutes
                that.seconds = seconds
              }
            },1000)
          },
          toPh() {
            this.$router.push({
              name: 'father'
            })
          },
          num: function (n) {
            return n < 10 ? '0' + n : '' + n
          },
        },
        watch: {
          second: {
            handler (newVal) {
              this.num(newVal)
            }
          },
          minute: {
            handler (newVal) {
              this.num(newVal)
            }
          }
        },
        computed: {
          second() {
            return this.num(this.seconds)
          },
          minute() {
            return this.num(this.minutes)
          }
        },
        beforeDestroy() {
          clearInterval(this.getTimer); //关闭
        },
    }
    </script>
    
    <style lang="scss" scoped>
    </style>
    

     

  • 相关阅读:
    解决docker 容器删除不掉的问题
    centos下安装docker
    Microsoft SQL Server 双机热备份,实时同步
    同一台主机下的两台虚拟机互ping不通
    JAVA基本数据类型
    记录一些比较高能的网站!
    Nginx+Lua+Redis配置
    用Squid3搭建缓存代理服务器
    Mysql导入CSV文件
    LeetCode--Remove Duplicates from Sorted Array
  • 原文地址:https://www.cnblogs.com/woniu666/p/13339880.html
Copyright © 2020-2023  润新知