重置函数中的setInterval,作用域是全局的
resetting setInterval in a function, scope is global..?
问题:当我在函数中声明clearInterval()/setInterval()或clearTimeout()/setTimeout()时,它什么也不做。我必须重置它的原因是用户可以点击重置计时器。
我尝试过的:我想要一个函数每3秒执行一次(因此为什么我使用setInterval()与setTimeout()),并在点击时重置计时器。我试过使用setTimeout()有它的clearartimeout () &setTimeout()在每次函数执行结束时调用。结果:执行一次。
下面的代码与setInterval相同。结果:循环,从不重置。
// Declare variables as global
var varTimerSpeed = 3000;
var varTimerInterval;
varTimerInterval = setInterval("someFunction()", varTimerSpeed);
function someFunction() {
// Reset timer
clearInterval(varTimerInterval);
varTimerInterval = setInterval("someFunction()", varTimerSpeed);
}
// Call the function
$(".class").live("click",function() { someFunction(); });
我在someFunction()中有其他事情正确执行,所以我知道click的处理程序正在工作
如果您希望someFunction
以间隔运行,但在单击.class
元素时将其清除并复位,则不要清除someFunction
内部的间隔。
只需在click处理程序中清除并重新启动它。
var varTimerSpeed = 3000;
var varTimerInterval = setInterval(someFunction, varTimerSpeed);
function someFunction() {
console.log( "someFunction" );
}
$(".class").live("click",function() {
clearInterval( varTimerInterval );
varTimerInterval = setInterval(someFunction, varTimerSpeed);
});
这个稍微修改的jsFiddle似乎工作得很好:http://jsfiddle.net/jfriend00/GgQBu/.
// Declare variables as global
var varTimerSpeed = 3000;
var varTimerInterval = setInterval(someFunction, varTimerSpeed);
function someFunction() {
// Reset timer
$("#output").append("...");
clearInterval(varTimerInterval);
varTimerInterval = setInterval(someFunction, varTimerSpeed);
}
// Call the function
$(".class").live("click", someFunction);
相关文章:
- Javascript-在全局作用域中调用本地函数/属性
- javascript中的全局作用域和本地作用域
- FireFox-在全局作用域中由id名称引用的元素.使用w3c标准
- 在全局作用域中定义的具有相同名称的变量
- 为什么全局变量没有't似乎受到内部作用域(Javascript)的影响
- javascript变量变量名和全局作用域(pinesnotify)
- 尝试使在专用作用域中动态更改的变量全局化
- JavaScript 作用域:在函数后保留全局变量值
- JS函数/全局变量的作用域
- 变量:本地作用域、全局作用域还是 JavaScript 引擎
- 为什么全局作用域中的变量被分配给窗口对象
- 全局作用域中的var someVariable和JavaScript中的window[“someVariable”]之间
- Javascript eval() for Json 字符串注入了全局作用域函数
- Javascript 局部和全局变量在回调函数中失去作用域
- 如何将全局作用域变量引用到局部作用域中
- Javascript:变量作用域和全局变量的弊端
- 拼接上的Javascript全局变量作用域/覆盖
- 如何使用函数将值更改为作用域中的全局变量?(“控制器”)
- 为什么在iframe中注入的JavaScript使用父窗口作为其全局作用域
- Javascript:从类内部创建全局作用域函数