JavaScript – jQuery间隔

我在jQuery中使用JavaScript。 我有以下脚本每30秒提醒一次。

 $(document).ready( function() { alert("hi"); setInterval(function() { alert("hi"); }, 30000); }); 

我希望在页面加载时(当文档/页面完全加载时)和之后每30秒间隔(如hi (0s) – hi (30s) – hi (60s)…等)提醒。 但我的解决方案适用于两个实例。 一个在DOM准备好,另一个在循环中。 有没有办法在单个实例中做同样的事情?

你可以在这里看到我的小提琴。

您可以使用setTimeout,并让回调重新安排自己。

 $(function() { sayHi(); function sayHi() { setTimeout(sayHi,30000); alert('hi'); } }); 

将代码包装在函数中。 然后,将该函数作为第一个参数传递给setInterval ,并调用该函数:

 $(document).ready( function() { //Definition of the function (non-global, because of the previous line) function hi(){ alert("hi"); } //set an interval setInterval(hi, 30000); //Call the function hi(); }); 

好吧,可能只有一次通话就可以做到这一点。

 setInterval( (function x() { alert('hi'); return x; })(), 30000); 

另一种解决方案是使用arguments.callee,但由于现在已弃用,因此通常不建议使用它。

 setInterval( (function() { alert('hi'); return arguments.callee; })(), 30000); 

不,使用setInterval是不可能的。 您可以使用setTimeout作为示例:

 function foo() { alert('hi'); setTimeout(foo, 30000); } $(function() { foo(); }); 
 $(function() { function heythere() { alert('hi'); setTimeout(heythere,30000); } heythere(); }); 

如果您希望它仅在30秒后运行一次,那么您希望使用setTimeout而不是setInterval