首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript计时器无法正常工作

JavaScript计时器无法正常工作
EN

Stack Overflow用户
提问于 2018-06-28 08:41:18
回答 1查看 44关注 0票数 0

您好,我有一个计时器,它同时显示分钟和秒,当它低于1分钟时,例如40秒左右,它开始闪烁,它仍然计时正确,但有时会显示一些其他数字,例如27 > 26 > 25,而不是短暂的时间,例如34,它继续使用> 24 > 23,但这些数字之间是什么?我如何删除它们最好检查一下代码。

<div class="container">
    <p id="time"></p><br>
    <button onclick='timer()'>Start Kviz</button>
</div>

<script>

function timer() {
    var min = '01m';
    var sec = 30;
    var timer = setInterval(function () {
        document.getElementById('time').innerHTML = '00d' + ' ' + 
         '00h' + ' ' + min + ' ' + sec + 's';
        sec--;


        if (sec === 0) {
            min = '00m';
        }

        if (min === '00m') {
            sec = 59;
            timer = setInterval(function () {

                document.getElementById('time').innerHTML = '00d' + 
              '00h' + min + sec + 's';
                sec--;


                if (sec < 0) {
                    alert ('Time is up!');
                    clearInterval(timer);
                }
            }, 1000);
        }
    }, 1000);
}
</script>
EN

回答 1

Stack Overflow用户

发布于 2018-06-28 08:54:55

您忘记了清除以下代码段中的间隔:

          if (min === '00m') {
            sec = 59;
            clearInterval(timer);
            timer = setInterval(function () {

另外,请清除警报消息之前的时间间隔,如下所示:

            if (sec < 0) {
                clearInterval(timer);
                alert ('Time is up!'); 
            }

最后的代码片段如下所示:

<div class="container">
    <p id="time"></p><br>
    <button onclick='timer()'>Start Kviz</button>
</div>

<script>

function timer() {
    var min = '01m';
    var sec = 30;
    var timer = setInterval(function () {
        document.getElementById('time').innerHTML = '00d' + ' ' + 
         '00h' + ' ' + min + ' ' + sec + 's';
        sec--;


        if (sec === 0) {
            min = '00m';
        }

        if (min === '00m') {
            sec = 59;
            clearInterval(timer);
            timer = setInterval(function () {

                document.getElementById('time').innerHTML = '00d' + 
              '00h' + min + sec + 's';
                sec--;


                if (sec < 0) {
                    clearInterval(timer);
                    alert ('Time is up!'); 
                }
            }, 1000);
        }
    }, 1000);
}
</script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51073203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档