当按钮被点击时延长超时函数

3
这段代码可以运行,但我希望在每次点击按钮时,timeout函数能够重置为“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);
    }
});

在Google中搜索“debounce”关键字。一些随机链接:http://benalman.com/code/projects/jquery-throttle-debounce/examples/debounce/ 另一个随机链接:http://davidwalsh.name/javascript-debounce-function - zerkms
我希望能够计算按钮被点击的次数,但是我希望在每次点击后延长可以再次点击的时间,如果这样能更好地解释的话。 - neobian
2个回答

7

只需取消并重新启动它:

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);
});

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);
    }
});

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接