我试着在eg之后做一个页面去到起始页。10秒不活动(用户未在任何地方单击)。其余部分我使用jQuery,但测试函数中的set/clear是纯javascript。
在我的frustation中,我最终得到了类似于这个函数的东西,我希望我可以在页面上的任何点击上调用它。计时器启动正常,但不会在单击时重置。如果函数在前10秒内被调用5次,那么将出现5个警报...没有clearTimeout...
function endAndStartTimer() {
window.clearTimeout(timer);
var timer;
//var millisecBeforeRedirect = 10000;
timer = window.setTimeout(function(){alert('Hello!');},10000);
}有没有人有几行代码可以解决这个问题?-点击停止,重置并启动计时器。-当计时器到达时,例如。10秒做点什么。
发布于 2010-06-10 22:30:29
您需要在函数外部声明timer。否则,您将在每次函数调用时获得一个全新的变量。
var timer;
function endAndStartTimer() {
window.clearTimeout(timer);
//var millisecBeforeRedirect = 10000;
timer = window.setTimeout(function(){alert('Hello!');},10000);
}发布于 2010-06-10 22:31:29
问题是timer变量是局部变量,它的值在每次函数调用后都会丢失。
你需要持久化它,你可以将它放在函数之外,或者如果你不想将变量公开为全局变量,你可以将它存储在一个closure中,例如:
var endAndStartTimer = (function () {
var timer; // variable persisted here
return function () {
window.clearTimeout(timer);
//var millisecBeforeRedirect = 10000;
timer = window.setTimeout(function(){alert('Hello!');},10000);
};
})();发布于 2010-06-10 22:30:50
这是因为定时器是函数的局部变量。
尝试在函数外部创建它。
https://stackoverflow.com/questions/3015319
复制相似问题