收藏
回答

怎么倒计时验证码?

Page({
  data: {
      smstxt:'获取'
  },
sendonesms:function(){
    var that = this;
    if( wait == 0){
      this.setData({
        smstxt:'获取'
      })
      wait = 60;
    }else{
      this.setData({
        smstxt:wait.toString()
      })
     wait--;
      setTimeout(function() {
        that.sendonesms
      }, 1000)
    }
  }
)}

 点击之后,就变成60,就不倒计时了,怎么回事啊。哪里写错了,感觉没错啊。


<label  bindtap="sendonesms">{{smstxt}}label>


最后一次编辑于  09-09
回答关注问题邀请回答
收藏

6 个回答

  • 谋谋谋
    谋谋谋
    09-09

    看不出

    09-09
    有用
    回复
  • 夕阳西下?
    夕阳西下?
    09-09
    setTimeout调用一次执行一次,就是只执行一次, setInterval执行多次
    


    09-09
    有用
    回复
  • ㅤ国民校草ㅤ
    ㅤ国民校草ㅤ
    09-09

    setTimeout setInterval

    09-09
    有用
    回复
  • 子不语
    子不语
    09-09

    弄一个 [ 能复现问题的简单的 ] 代码片段,我帮你看看

    https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    请学会如何「提问」(👈戳我)【个体工商户】微信认证问题(👈戳我)

    09-09
    有用
    回复
  • ?
    ?
    09-09

    点击获取验证码的函数

    let time = 60;

    let timer = setInterval(() => {

          time--;

          if (time > 0{

            that.setData({

              codeTxt: time + 's',        

       IsDisAbled: false,//不可点击

            })

          } else {

            that.setData({

              codeTxt: '再次获取验证码',

              IsDisAbled: true//可点击

            })

            clearInterval(timer);

          }

        }, 1000);


    09-09
    有用
    回复 4
    • 少年
      少年
      09-09
      谢谢,我找到了,别的做法,我就想知道,我这个错在哪里了。
      09-09
      回复
    • ?
      ?
      09-09回复少年
      你把你这个所有的都贴出来 我看看。你wait定义的什么。
      09-09
      回复
    • 少年
      少年
      09-09
      wait是全局变量,在最上面,pages,上面。let wait = 60;
      09-09
      回复
    • ?
      ?
      09-09回复少年
      你用的是延时器,应该用定时器setInterval
      09-09
      回复
  • 少年
    少年
    09-09

    wait是全局变量,在最上面

    09-09
    有用
    回复
登录 后发表内容
问题标签