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

用 js 写的计时器,暂停计时无法生效

用 js 写的计时器,暂停计时无法生效

翻阅古今 2019-03-12 17:08:32
是用setInterval每10ms调用一次倒计时方法,想让计时器在倒计时的时候点击停止能暂停,再点能继续                var FnSec=function(){                    sec.innerHTML-=1;                    if(sec.innerHTML<0){                        sec.innerHTML="100";                        time.innerHTML-=1;                    }                    if(time.innerHTML.length<2){                        time.innerHTML="0"+time.innerHTML;                    }                    if(sec.innerHTML.length<2){                        sec.innerHTML="0"+sec.innerHTML;                    }                    if (sec.innerHTML==0 && time.innerHTML==0) {                        clearInterval(secInterValId);                        var audio = document.getElementById("bgMusic");                        audio.play();                        window.alert("时间到!");                        audio.pause();                        start.innerHTML="开始";                        inputDisable.style.display="none";                        input.style.display="block";                        resetDisable.style.display="block";                        reset.style.display="none";                        time.innerHTML="10";                        sec.innerHTML="00";                    }                }                var secInterValId=setInterval(FnSec,10);                start.innerHTML="停止";刚学前端,今天刚学了间歇调用,小白捣鼓了一晚上都不行,没辙了,求大神帮忙看一下!!
查看完整描述

2 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

secInterValId 改成全局变量,使得可以保存上一次的 setInterval 值。否则每次点击同一个按钮 secInterValId 都将被重置


以下伪代码仅供参考


(function () {

  var secInterValId = null


  startBtn.addEventListener('click', () => {

    secInterValId = setInterval(fn, 10)

  })


  pauseBtn.addEventListener('click', () => {

    clearIntervalId(secInterValId)

  })

}())


查看完整回答
反对 回复 2019-03-17
?
交互式爱情

TA贡献1712条经验 获得超3个赞

我给个另外的思路,直接加个状态变量进行控制就行了,比如说:


var paused = false,

    timer = null;

function loop(){

    timer = setTimeout(loop,10);

    if(paused) return false;

    //这里主代码

}


//当你需要暂停的时候,改变paused的值就行了,这当你在一个计时器下,需要分开管理不同功能的状态的时候很有用。如果确实需要销毁计时器,再clear(timer)变量就行


查看完整回答
反对 回复 2019-03-17
  • 2 回答
  • 0 关注
  • 1356 浏览
慕课专栏
更多

添加回答

举报

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