jQuery – 如何在使用clearInterval将其终止后重新启动setInterval?

我想用2个按钮创建一个页面,’STAY’和’Leave’。 按钮下方有一个iFrame。 当页面第一次加载时,iFrame会在10秒后自动开始刷新。 当用户点击STAY按钮时,它将停止刷新。 之后,如果他点击LEAVE按钮,iFrame将在10秒后再次开始刷新。 我正在使用此代码:

$(document).ready(function() { var refreshIntervalId = setInterval( "update()", 10000 ); $('#leave').click(function () { var refreshIntervalId = setInterval( "update()", 10000 );; }) $('#stay').click(function () { clearInterval(refreshIntervalId); }) }); function update(){ var url = "load.php"; $('iframe#ifrm').attr('src', url); }  

但它不起作用,我是否以错误的方式使用clearInterval?

我认为你需要在函数范围之外拉出设置间隔id。

 var refreshIntervalId; $('#leave').click(function () { refreshIntervalId = setInterval( update, 10000 ); }) $('#stay').click(function () { clearInterval(refreshIntervalId); }) }); 

也许对refreshIntervalId变量进行一些validation检查……

 if(refreshIntervalId!=null){ // Do something with the interval id } 

首先,您无法在#leave点击function中定义变量,并在#leave clickfunction中使用它。

像这样用它:

 var refreshIntervalId = null; $('#leave').click(function () { refreshIntervalId = setInterval( "update()", 10000 ); }) $('#stay').click(function () { clearInterval(refreshIntervalId); }) 

这是一个范围问题。 这意味着无论何时放置“var”定义了哪些函数可以访问变量。 如果在Tricker的示例中定义所有函数之外的变量,则文档中的任何函数都可以访问该值。

Tricker之前发布的例子:

 var refreshIntervalId = null; $('#leave').click(function () { refreshIntervalId = setInterval( "update()", 10000 ); }) $('#stay').click(function () { clearInterval(refreshIntervalId); }) 

有时整个文档不需要访问变量,因此您希望将其放在函数中。