为了账号安全,请及时绑定邮箱和手机立即绑定

setTimeout的疑虑?

setTimeout的疑虑?

好学的Lv 2017-03-15 10:14:20
<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>Title</title> </head> <body>     <button id="btn">按我倒计时</button> <script>     var oBtn = document.getElementById('btn');     var sec = 60;     oBtn.onclick = function(){         for(var i =0;i<sec;i++){             var timer = setTimeout(function(){                 if(sec!=0){                     oBtn.innerText = '重新发送('+sec+')';                     sec--;                 }else{                     sec = 60;                     oBtn.innerText = '按我倒计时'  }             },1000)         }     } </script> </body> </html>目的是想点击按钮,按钮开始60s的倒计时,每隔一秒数字减一,但是我上面的代码按一下,过了一秒,数字直接变成了1,这是什么原因呢?我是这么分析的,当v=0时,隔了1s,文字内容变成'重新发送(60)',执行完之后v=1,隔了1s,文字内容变成‘重新发送(59)’...但就是不对,望大神指明。
查看完整描述

1 回答

已采纳
?
Caballarii

TA贡献1123条经验 获得超629个赞

for循环一瞬间就执行完了,不会在那里等你的。这段代码逻辑混乱。

oBtn.onclick = function(){
      function func(){
         if(sec!=0){
             oBtn.innerText = '重新发送('+sec+')';
             sec--;
             setTimeout(func,1000);
         }else{
             sec = 60;
             oBtn.innerText = '按我倒计时'
         }
     }
     
     func();
}


查看完整回答
反对 回复 2017-03-15
  • 1 回答
  • 0 关注
  • 1057 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信