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
。