单击按钮时延长超时功能

时间:2014-07-18 01:00:36

标签: javascript jquery

这段代码可以工作,但我每次点击按钮时都会尝试将超时功能重置为“0”。

var running = false,
    count = 0,
    run_for = 700;


var end_counter = function() {
    if (running) {
        running = false;
        $("#status").text("Not Running");
        alert(count);
        started_at = 0;
    }
};

$('button').click(function() {
    if (running) {
    count++;


    } else {
        running = true;
        $("#status").text("Running");
        count = 1;
        setTimeout(end_counter, run_for);
    }
});

2 个答案:

答案 0 :(得分:3)

只需取消并重新启动它:

var timerId,
    count = 0;
function end_counter() {
    $("#status").text("Not Running");
    alert(count);
    count = 0;
}
$('button').click(function() {
    $("#status").text("Running");
    count++;
    clearTimeout(timerId);
    timerId = setTimeout(end_counter, 700);
});

答案 1 :(得分:0)

var running = false,
    count = 0,
    run_for = 700;

var timer;

var end_counter = function() {
    if (running) {
        running = false;
        $("#status").text("Not Running");
        alert(count);
        started_at = 0;
    }
};

$('button').click(function() {
    clearTimeout(timer);
    if (running) {
        count++;
        timer = setTimeout(end_counter, run_for);
    } else {
        running = true;
        $("#status").text("Running");
        count = 1;
        timer = setTimeout(end_counter, run_for);
    }
});

将计时器设置为变量 - 然后在单击时清除它并在计数后重新启动它。