在 jQuery 中每 5 秒调用一次函数的最简单方法是啥? [复制]
Posted
技术标签:
【中文标题】在 jQuery 中每 5 秒调用一次函数的最简单方法是啥? [复制]【英文标题】:What's the easiest way to call a function every 5 seconds in jQuery? [duplicate]在 jQuery 中每 5 秒调用一次函数的最简单方法是什么? [复制] 【发布时间】:2011-01-11 08:55:15 【问题描述】:JQuery,如何每 5 秒调用一次函数。
我正在寻找一种方法来自动更改幻灯片中的图像。
如果可能,我宁愿不安装任何其他 3rd 方插件。
【问题讨论】:
+1 表示“如果可能,我宁愿不安装任何第三方插件。” @nickf:因为 jQuery 已经是第 3 方,所以这很幽默? (但不是真的,因为我确信他已经在使用 jQuery 做其他事情了) @Mark,呵呵,不,我不是在讽刺,只是我看到很多人直接跳到插件,即使他们的问题可以用几行普通的 javascript 来解决。 几行古怪的 hack,你永远不知道它可以在哪些浏览器中工作。 请注意,对于那些希望将此技术与 AJAX 请求结合使用的用户 - 不要这样做。让您页面上的每个用户每 N 秒调用一次您的服务器相当于对自己进行 DDOS。如果您需要保持服务器和 UI 同步,请改用 WebSockets。 【参考方案1】:您不需要 jquery,在纯 javascript 中,以下将起作用!
var intervalId = window.setInterval(function()
/// call your function here
, 5000);
要停止循环,您可以使用
clearInterval(intervalId)
【讨论】:
谁说我不能每 2 秒刷新一次 :D @Alucard 提问者没有说明需要停止,所以我说不需要。 @andrewb 不过,它对于发现这个问题并且确实需要 clearInterval() 的其他人很有用。 w3schools.com/jsref/met_win_clearinterval.asp 你写了一个比 w3schools 更简洁的函数——走的路!【参考方案2】:您可以使用 setInterval 在页面上注册一个间隔,即:
setInterval(function()
//code goes here that will be run every 5 seconds.
, 5000);
【讨论】:
是的,我修好了,打字太快了,知道会很快回复:) 您的开场建议仍然引用 setTimeout :) 好吧,谢谢:) 伙计,太晚了。疲倦时需要停止尝试回答问题。 你总是可以在函数中再次调用setTimeout
....这就是我以前这样做的方式>。
@Mark Yup,当时间不是很关键,但工作需要定期执行时,我就是这样做的。【参考方案3】:
订阅 setInterval() 并使用 clearInterval() 停止永远循环的一个很好的例子:
function everyTime()
console.log('each 1 second...');
var myInterval = setInterval(everyTime, 1000);
调用此行来停止循环:
clearInterval(myInterval);
【讨论】:
【参考方案4】:第一个答案的小提示。如果您的函数已经定义,请引用该函数但不要调用它!!!所以不要在函数名后面加上任何括号。就像:
my_function();
setInterval(my_function,10000);
【讨论】:
如果不调用一次,第一次调用会在10000ms内。如果你马上想要一个,你仍然可以正常调用一次。 这个答案为我节省了很多时间;我一直想知道为什么我的函数没有被调用很久。幸运的是,我偶然发现了这个答案; +1【参考方案5】:上面提到的函数无论在之前的调用中是否完成都会执行,一旦执行完成,这个函数每隔x秒运行一次
// IIFE
(function runForever()
// Do something here
setTimeout(runForever, 5000)
)()
// Regular function with arguments
function someFunction(file, directory)
// Do something here
setTimeout(someFunction, 5000, file, directory)
// YES, setTimeout passes any extra args to
// function being called
【讨论】:
【参考方案6】:setInterval
和 setTimeout
都可以为您工作(正如@Doug Neiner 和@John Boker 所写现在都指向setInterval
)。
请参阅here 了解更多关于两者的解释,看看哪个最适合您以及如何阻止它们。
【讨论】:
【参考方案7】:您可以使用 window.setInterval 并且时间必须以毫秒为单位定义,在以下情况下,该函数将在每一秒(1000 毫秒)后调用
<script>
var time = 3670;
window.setInterval(function()
// Time calculations for days, hours, minutes and seconds
var h = Math.floor(time / 3600);
var m = Math.floor(time % 3600 / 60);
var s = Math.floor(time % 3600 % 60);
// Display the result in the element with id="demo"
document.getElementById("demo").innerhtml = h + "h "
+ m + "m " + s + "s ";
// If the count down is finished, write some text
if (time < 0)
clearInterval(x);
document.getElementById("demo").innerHTML = "EXPIRED";
time--;
, 1000);
</script>
【讨论】:
以上是关于在 jQuery 中每 5 秒调用一次函数的最简单方法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章