启动和停止循环计数器javascript

时间:2016-02-11 13:31:37

标签: javascript settimeout

我有这个柜台:

http://jsfiddle.net/nsu77w92/17/

原则是倒计时,运行一些功能,然后再次倒计时。

该功能正在运行:

setInterval(function() {
countdown();
},10000);

我无法弄明白,如何开始和停止它。

我尝试过这样的事情:

function start() {
    timer = setTimeout(tick, 1000);
};

function stop() {
    clearTimeout(timer);
};

但它不起作用。有人可以帮助我吗?你有什么建议可以解决吗?请检查小提琴(上面的链接)

2 个答案:

答案 0 :(得分:2)

您必须从start function返回并分配给变量 timerId ,并将该变量作为参数传递到stop function调用,如下面的代码段所示:

function start() {
    var tick = function(){
        console.log('I am tick function');
    };
    var timerId = setTimeout(tick, 1000);
    return timerId
};
var timerId = start();
function stop(timerId) {
    clearTimeout(timerId);
};
stop(timerId);

关于评论中提供的代码段,我已对其进行了更新to that one

注意修改与 timerId 变量的交互。问题在于跟踪它的方式( timerId )。当您在setTimeout内调用tick function函数时,您必须刷新"新的自动收报机"的值,这样您就可以停止传递给{{1}的最新函数}。

答案 1 :(得分:0)

我找到了一种方法。

如果有人需要,你可以去: http://codepen.io/anon/pen/obJMJO

function start(){
countdown();
}
function stop(){
clearTimeout(timerI)
}
sectotal = 5;
function countdown() {
        var secs = sectotal;

        function timer() {
            secs--;
         $("#counter").html("(" + secs + ")")


            if( secs > 0 ) {
                timerI = setTimeout(timer, 1000);
            } else {
                alert('repeat!')
                secs = sectotal
                countdown();
            }
        }
        timer();
}

和html:

<div id="counter"></div>
<button onclick="start()">
Start
</button>
<button onclick="stop()">
Stop
</button>