Вы можете использовать JavaScript-метод setInterval()
для повторного выполнения функции через определенный период времени. Метод setInterval()
требует наличия двух параметров, первый из которых обычно является функцией или выражением, а второй — временной задержкой в миллисекундах.
В следующем примере функция showTime()
вызывается повторно через каждые 1000 миллисекунд (1 секунду), пока вы не прикажете ей остановиться. Давайте посмотрим, как это работает:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>The JavaScript setInterval() Method</title>
<script src="https://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="https://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 секунды) после того, как переход изображения нарастает и затухает полностью.