收藏
回答

怎么倒计时验证码?

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>


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

7 个回答

  • 波吉
    波吉
    2021-04-08

    setInterval


    2021-04-08
    有用
    回复
  • 谋谋谋
    谋谋谋
    2020-09-09

    看不出

    2020-09-09
    有用
    回复
  • 蹲着嗑瓜子
    蹲着嗑瓜子
    2020-09-09
    setTimeout调用一次执行一次,就是只执行一次, setInterval执行多次
    


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

    setTimeout setInterval

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

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

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

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

    2020-09-09
    有用
    回复
  • .
    .
    2020-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);


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

    wait是全局变量,在最上面

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