在jQuery中每5秒调用一个函数最简单的方法是什么?

时间:2010-01-31 07:31:35

标签: javascript jquery jquery-plugins timer

JQuery,如何每隔5秒调用一次函数。

我正在寻找一种在幻灯片中自动更改图像的方法。

如果可能,我宁愿不安装任何其他第三方插件。

6 个答案:

答案 0 :(得分:860)

你不需要jquery,在普通的javascript中,以下内容可行!

window.setInterval(function(){
  /// call your function here
}, 5000);

要停止循环,您可以使用

clearInterval() 

答案 1 :(得分:98)

您可以使用setInterval在页面上注册一个间隔,即:

setInterval(function(){ 
    //code goes here that will be run every 5 seconds.    
}, 5000);

答案 2 :(得分:40)

第一个答案只是一个小小的提示。如果您的功能已经定义,请参考该功能,但不要调用它!所以不要在函数名后添加任何括号。就像:

my_function(){};
setInterval(my_function,10000);

答案 3 :(得分:30)

上面提到的函数无论是否在之前的调用中完成都会执行,执行完成后每隔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
}

答案 4 :(得分:9)

setIntervalsetTimeout都适合你(,因为@Doug Neiner和@John Boker写的现在都指向setInterval)。
有关两者的更多解释,请参阅here,了解您最常见的套房以及如何停止这些套房。

答案 5 :(得分:3)

你可以使用window.setInterval和time必须以毫秒为单位定义,在下面的情况下,函数将在每一秒(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>