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

ens*_*are 502 javascript jquery timer jquery-plugins

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

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

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

Dou*_*ner 900

你不需要jquery,在普通的javascript中,以下将工作!

window.setInterval(function(){
  /// call your function here
}, 5000);
Run Code Online (Sandbox Code Playgroud)

要停止循环,您可以使用

clearInterval() 
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记clearInterval()来停止执行 (36认同)
  • 谁说我不能每2秒刷新一次:D (34认同)
  • 尽管如此,@ andrewb对于那些发现这个问题并且需要clearInterval()的人来说很有用. (16认同)
  • 当你的代表没有上限时,我会等待你快速回答问题的+1,同时我会给你的评论+1,因为我的问题提供了如此丰富的信息:) (4认同)
  • @Alucard提问者没有说明它需要永远停止,所以我说没有必要. (3认同)
  • 我想知道如果有人试图投票给你,当你达到上限时会发生什么.那个投票从来没有达到你的代表吗?我从来不知道. (2认同)
  • 它仍会计入您的个人标签统计数据,但不会,您再也不会看到您的总代表得分上的代表.更糟糕的是,如果你有10个upvotes,但只有一个计算,然后有人downvotes,你仍然失去2点.哦,这个课程的标准杆! (2认同)
  • http://www.w3schools.com/jsref/met_win_clearinterval.asp (2认同)

Joh*_*ker 105

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

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

  • RIP可以延迟1分钟回答并获得450张选票 (6认同)
  • 是的我修好了,试着键入太快,知道它会很快回答:) (2认同)

Fra*_*cho 45

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

my_function(){};
setInterval(my_function,10000);
Run Code Online (Sandbox Code Playgroud)

  • 如果您没有拨打一次,第一次通话将在10000毫秒.如果您想立即使用,您仍然可以正常调用一次. (6认同)

Ste*_*ain 32

上面提到的函数无论是否在之前的调用中完成都会执行,一旦执行完成,它就会在每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
}
Run Code Online (Sandbox Code Playgroud)


Ric*_*edo 32

一个很好的例子,在哪里订阅setInterval(),并使用clearInterval()来停止永久循环:

function myTimer() {
    console.log(' each 1 second...');
}

var myVar = setInterval(myTimer, 1000);
Run Code Online (Sandbox Code Playgroud)

调用此行来停止循环:

 clearInterval(myVar);
Run Code Online (Sandbox Code Playgroud)


Dro*_*ror 10

双方setIntervalsetTimeout能为你的工作(如@Doug Neiner和@约翰博克写无论是现在还是指向setInterval).
请参阅此处,了解更多解释,了解您最常见的套房以及如何停止这些套房.


erd*_*pak 5

您可以使用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>
Run Code Online (Sandbox Code Playgroud)