wake-up-neo.com

Was ist der einfachste Weg, um in jQuery alle 5 Sekunden eine Funktion aufzurufen?

JQuery, wie alle 5 Sekunden eine Funktion aufgerufen wird.

Ich suche nach einer Möglichkeit, das Ändern von Bildern in einer Diashow zu automatisieren.

Wenn möglich, möchte ich lieber keine Plugins anderer Anbieter installieren.

489
ensnare

Sie brauchen dafür keine jquery, in normalem Javascript funktioniert folgendes!

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

Um die Schleife zu stoppen, können Sie verwenden

clearInterval() 
881
Doug Neiner

sie könnten ein Intervall auf der Seite mit setInterval registrieren, dh:

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

Nur ein kleiner Tipp für die erste Antwort. Wenn Ihre Funktion bereits definiert ist, referenzieren Sie die Funktion, aber rufen Sie sie nicht auf !!! Setzen Sie also keine Klammern nach dem Funktionsnamen. So wie:

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

Die oben genannten Funktionen werden ausgeführt, unabhängig davon, ob sie beim vorherigen Aufruf ausgeführt wurden oder nicht. Diese Funktion wird nach Abschluss der Ausführung alle x Sekunden ausgeführt

// 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
}
32
Steel Brain

Ein gutes Beispiel, wo Sie setInterval () abonnieren und mit clearInterval () die Forever-Schleife stoppen können:

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

var myVar = setInterval(myTimer, 1000);

rufen Sie diese Zeile auf, um die Schleife zu stoppen:

 clearInterval(myVar);
31

Sowohl setInterval als auch setTimeout können für Sie arbeiten (wie @Doug Neiner und @John Boker geschrieben haben beide zeigen nun auf setInterval).
In hier finden Sie weitere Erklärungen zu beiden, um zu sehen, welche Suiten Sie am häufigsten verwenden und wie Sie die einzelnen beenden können.

10
Dror

sie können window.setInterval verwenden und die Zeit muss in Millisekunden angegeben werden. In diesem Fall wird die Funktion nach jeder einzelnen Sekunde (1000 Millisekunden) aufgerufen.

<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>
4
erdeepak