JS中的定时器为什么不能二次使用


<body>
    <div class="verify-box">
        <input type="text" name="verify_code" maxlength="20" autocomplete="off" placeholder="验证码" id="verify-code"style="margin-bottom:0px;">
        <button id="get-verify-code" class="button-big">获取验证码</button>
    </div>
    <script>
        var btn=document.querySelector('button');
        var time=59;
        btn.addEventListener('click',function(){
            btn.disabled=true;
            var timer=setInterval(function(){
                if (time==0){
                    clearInterval(timer);
                    btn.disabled=false; 
                    btn.innerHTML='获取验证码';
                    
                }else{
                    btn.innerHTML='还剩下'+time+'秒';
                    time--;
                }
            },10);
        });
    </script>
</body>

点击按钮后进行倒数计时,之后复原按钮后,再次点击不再出现效果

代码替换为如下

 var btn=document.querySelector('button');
                btn.addEventListener('click',function(){
                    var time=59;
                    btn.disabled=true;
                    var timer=setInterval(function(){
                        if (time==0){
                            clearInterval(timer);
                            btn.disabled=false; 
                            btn.innerHTML='获取验证码';
                            
                        }else{
                            btn.innerHTML='还剩下'+time+'秒';
                            time--;
                        }
                    },10);
                });

第一次执行完之后全局变量 time变成了0,
你要么像楼上的老哥那样,定义一个局部变量,要么在time==0的时候,重新给time赋值让time=59

你没有重复调用