Как повторно вызывать функцию через фиксированный интервал времени в jQuery
Вы можете использовать JavaScript-метод setInterval()
для повторного выполнения функции через определенный период времени. Метод setInterval()
требует наличия двух параметров, первый из которых обычно является функцией или выражением, а второй — временной задержкой в миллисекундах.
В следующем примере функция showTime()
вызывается повторно через каждые 1000 миллисекунд (1 секунду), пока вы не прикажете ей остановиться. Давайте посмотрим, как это работает:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>The JavaScript setInterval() Method</title>
<script src="//code.jquery.com/jquery-1.12.4.min.js"></script>
<script> var myVar; function showTime(){ var d = new Date(); var t = d.toLocaleTimeString(); $("#demo").html(t); // display time on the page } function stopFunction(){ clearInterval(myVar); // stop the timer } $(document).ready(function(){ myVar = setInterval("showTime()", 1000); });
</script>
</head><body> <p id="demo"></p> <button onclick="stopFunction()">Stop Timer</button></body></html>
Однако лучший подход — использовать функцию setTimeout()
, потому что, в отличие от setInterval()
с функцией setTimeout()
вы можете дождаться полного выполнения функции перед ее повторным вызовом. Вот пример:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>The JavaScript setTimeout() Method</title>
<style>
img{
display: none;
}
</style>
<script src="//code.jquery.com/jquery-1.12.4.min.js"></script>
<script> var myVar; function showImage(){ $("img").fadeIn(750).fadeOut(750); myVar = setTimeout(showImage, 2000); } function stopFunction(){ clearTimeout(myVar); // stop the timer } $(document).ready(function(){ showImage(); });
</script>
</head><body> <button onclick="stopFunction()">Stop Image Transition</button> <p> <img src="images/sky.jpg" alt="Cloudy Sky"> </p></body></html>
В приведенном выше примере функция showImage()
вызывается каждый раз через 2000 миллисекунд (2 секунды) после того, как переход изображения нарастает и затухает полностью.