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

为何for循环无用,直接显示1

for(times=60;times>0;times--){send.value=times+"秒后重新发送";}

正在回答

6 回答


window.onload=function(){

   var send=document.getElementById('send'),

       times=60,

       timer=null;

   send.onclick=function(){

     // 计时开始 

         this.disabled="disabled";  

       timer=setInterval(function(){

             times--; 

             send.value=times+"秒后重试";

             if(times==0){

              send.disabled=false

                 clearInterval(timer);

                 send.value="请发送验证码";

                 times=60


             }   

            

        },1000)

   

   } 

}


0 回复 有任何疑惑可以回复我~

setInterval 第二个参数是毫秒, 要设置成1000,不是100.

0 回复 有任何疑惑可以回复我~

你这没定时器,电脑运行你这循环代码,几乎是秒完成,你压根看不到变化。当然直接跳到最后

0 回复 有任何疑惑可以回复我~

不好意思,修改一下。

倒数第二次循环~~当times=2时;times>0;   输出:2秒后重新发送  ; times--  

最后一次循环~~~times=1;times>0;  输出:1秒后重新发送  ;   times-- 

                   times=0;不满足条件 退出循环,。。。所以最后输出为1.


0 回复 有任何疑惑可以回复我~

因为:

倒数第二次循环~~当times=2时;times>0;   输出:2秒后重新发送  ; times--  

最后一次循环~~~times=1;times>0;  输出:2秒后重新发送  ;   times-- 

                   times=0;不满足条件 退出循环,。。。所以最后输出为1.

0 回复 有任何疑惑可以回复我~

我觉得应该是因为send.value会直接显示最后的值,不会随着for循环改变value,你可以用一个定时器对send的value值进行改变,我在你的代码下面加了一个consol.log(times+"秒后重新发送");是可以在控制台输出60~1的语句的。

var send=document.getElementsByClassName('send')[0];
        var times=60;
        setInterval(time,100)
        function time(){
            times--;
            send.value=times+'秒后重新发送';
            (times<=0)&&(send.value='重新发送');
        }


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为何for循环无用,直接显示1

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信