javascript - Vad är det enklaste sättet att anropa en funktion var 5:e sekund i jQuery?
JQuery, hur man anropar en funktion var 5:e sekund.
Jag letar efter ett sätt att automatisera bytet av bilder i ett bildspel.
Jag skulle helst inte installera några andra tredjepartsprogram om möjligt.
Svar #1
Du behöver inte jquery för detta, i vanlig javascript fungerar följande:
var intervalId = window.setInterval(function(){
// call your function here
}, 5000);
För att stoppa loopen kan du använda:
clearInterval(intervalId)
Svar #2
du kan registrera ett intervall på sidan med hjälp av setInterval, det vill säga:
setInterval(function(){
//code goes here that will be run every 5 seconds.
}, 5000);
Svar #3
Ett bra exempel på när man ska prenumerera på en setInterval() och använda clearInterval() för att stoppa den eviga loopen:
function everyTime() {
console.log('each 1 second...');
}
var myInterval = setInterval(everyTime, 1000);
anropa denna rad för att stoppa loopen:
clearInterval(myInterval);
Svar #4
Bara ett litet tips för det första svaret. Om din funktion redan är definierad, referera till funktionen men kalla inte på den!!! Så sätt inga parenteser efter funktionsnamnet. Precis som:
my_function(){};
setInterval(my_function,10000);
Svar #5
De funktioner som nämns ovan körs oavsett om de har slutförts vid tidigare anrop eller inte, denna körs efter varje x sekunder när körningen är slutförd
// 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
}
Svar #6
Både setInterval och setTimeout kan fungera för dig (som @Doug Neiner och @John Boker skrev pekar båda nu på setInterval).
Se här för lite mer förklaring om båda för att se vilken som passar dig bäst och hur man stoppar var och en av dem.
