我试图在我的网站上创建一个秒表,我可以在其中计算自单击按钮以来的时间。然后,我希望能够通过单击另一个按钮来停止计时器并将经过的时间存储在变量中。

我目前无法停止计时器吗?

我阅读的所有内容似乎都暗示clearInterval将停止计时器,但我显然没有正确实现它。根据以下代码(在this fiddle中也可用),我在哪里出错。

的HTML

    <span id="start-counter">start counter</span>
    <span id="stop-counter">stop counter</span>
    <span id="counter"></span>


JS

    $("#start-counter").on("click", function(event){
    var pageVisisted = new Date();

    var test= setInterval(function() {
        var timeOnSite = new Date() - pageVisisted;
        var secondsTotal = timeOnSite / 1000;
        var minutes = Math.floor(secondsTotal / 60) % 3600;
        var seconds = Math.floor(secondsTotal)  % 60;

        document.getElementById('counter').innerHTML = minutes + ":" + seconds;
    }, 1000);
    });

    $("#stop-counter").on("click", function(event){
        //double check onclick is working
        //alert('test');
        clearInterval(test);
    });

最佳答案

工作演示--> http://jsfiddle.net/pyRz9/

在外部范围内定义test

var test;
$("#start-counter").on("click", function (event) {
    var pageVisisted = new Date();

    test = setInterval(function () {
        var timeOnSite = new Date() - pageVisisted;
        var secondsTotal = timeOnSite / 1000;
        var minutes = Math.floor(secondsTotal / 60) % 3600;
        var seconds = Math.floor(secondsTotal) % 60;

        document.getElementById('counter').innerHTML = minutes + ":" + seconds;
    }, 1000);
});

$("#stop-counter").on("click", function (event) {
    //double check onclick is working
    //alert('test');
    clearInterval(test);
});

关于javascript - Javascript无法使用clearInterval停止计时器onclick,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16650256/

10-12 02:24