每按一次按钮重置setTimeout?

时间:2011-07-31 12:54:33

标签: javascript jquery timer setinterval

这是我的代码:

var sec = 10; 
var timer = setInterval(function() {    
    $('#timer span').text(sec--); 
}, 1000);

它将setTimeout设置为10秒。我希望有一个重置按钮,单击,再次拨打setTimeout,延迟10秒。

3 个答案:

答案 0 :(得分:6)

您可以通过将setTimeout()调用的结果存储到某个变量,然后在单击按钮时将存储的结果传递给clearTimeout(),然后再安排新的超时和分配它回到同一个变量。

听起来有点棘手,但它真的非常简单。这是一个例子:

http://jsfiddle.net/kzDdq/

答案 1 :(得分:6)

HTML:

<button id="resetButton">Reset</button>

JavaScript的:

var resetButton = $('#resetButton')[0],
    timerId;

function timerExpired() {
    alert('Timer expired');
}

$(resetButton).click(function() {
    clearTimeout(timerId);
    timerId = setTimeout(timerExpired, 10000);
}).triggerHandler('click');

注意:此JavaScript代码应放在a ready handler

现场演示: http://jsfiddle.net/QkzNj/

(您可以将延迟设置为较小的值,如3000(3秒) - 这样可以更轻松地测试演示。)

答案 2 :(得分:0)

<div>Div</div>

var div = document.getElementsByTagName("div")[0];

function timedMsg() {
   console.log("timeout expired.");
   div.t = setTimeout(timedMsg, 1000);    
}

timedMsg();

div.onclick = function() {
   clearTimeout(div.t);
   timedMsg();
};