zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合
    MyBatis学习总结(五)——实现关联表查询
    MyBatis学习总结(六)——调用存储过程
    MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
    MyBatis学习总结(二)----使用MyBatis对表执行CRUD操作
    MyBatis学习总结(三)——优化MyBatis配置文件中的配置
    CORS跨域问题
    按指定后缀名删除文件的demo
    Markdown起步
    Linux和git起步
  • 原文地址:https://www.cnblogs.com/toughy/p/13151212.html
Copyright © 2011-2022 走看看