javascript - 如何在 javascript/Jquery 中重置计时器?

标签 javascript jquery timer

我有一个计时器,它在我的应用程序加载时启动。但我想通过单击按钮重置计时器。但是当我尝试重置计时器时,计时器部分开始显示奇怪的值。

请在下面找到我的代码:

HTML:

    <font size="4"><span class="myClass" id="time">02:00</span></font>   
<button onclick="myFunction()">Click me</button> 

Javascript:

$( document ).ready(function() 
            {
                var minute = 60 * 2,
                display = document.querySelector('#time');
                begin(minute, display);

            });


function myFunction()
{
var minute = 60 * 2,
display = document.querySelector('#time');
begin(minute, display);

}

    function begin(duration, display) {
                var timer = duration, minutes, seconds;
                setInterval(function () {
                    minutes = parseInt(timer / 60, 10)
                    seconds = parseInt(timer % 60, 10);

                    minutes = minutes < 10 ? "0" + minutes : minutes;
                    seconds = seconds < 10 ? "0" + seconds : seconds;

                    display.textContent = minutes + ":" + seconds;

                    if (--timer < 0) 
                    {
                        timer = duration;
                    }
                }, 1000);
            }

最佳答案

我认为您同时运行多个间隔,因此您需要使用clearInterval(interval); 清理它们;

$( document ).ready(function() 
        {
            var minute = 60 * 2,
            display = document.querySelector('#time');
            begin(minute, display);

        });
var interval;

function myFunction()
{
var minute = 60 * 2,
display = document.querySelector('#time');
clearInterval(interval);
begin(minute, display);
}

function begin(duration, display) {
            var timer = duration, minutes, seconds;
            interval = setInterval(function () {
                minutes = parseInt(timer / 60, 10)
                seconds = parseInt(timer % 60, 10);

                minutes = minutes < 10 ? "0" + minutes : minutes;
                seconds = seconds < 10 ? "0" + seconds : seconds;

                display.textContent = minutes + ":" + seconds;

                if (--timer < 0) 
                {
                    timer = duration;
                }
            }, 1000);
        }

类似这样的东西。

关于javascript - 如何在 javascript/Jquery 中重置计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40910206/

相关文章:

javascript - 为什么这种行为?__proto__ vs 原型(prototype)?

jquery - 在 Javascript/jQuery 中将纯 JSON 内容打印到 html 页面

javascript - 我无法使用 JavaScript 来播放图像幻灯片

Android - 希望应用每秒执行一次任务

javascript - 在 OneDrive 等网站应用程序中创建一个选择工具

javascript - Google 的 SNAPPY 算法在 javascript 中的实现(客户端)

javascript - 防止 Twitter 响应式布局在宽度 < 320px 时折叠

jquery - 在网站上隐藏动画

javascript - 替换第一个括号 - (到最后一个)中所有出现的 ('content' ) 吗?

java - 只有创建 View 层次结构的原始线程才能触摸其 View 。没有可运行的