Как запустить setInterval только один раз?
Есть куча вопросов с таким названием, но они немного мне не подходят. У меня есть скрипт, который проверяет есть ли блок в поле видимости окна браузера. И есть число, которое я хочу анимировать, рост температуры от 0 до 60. я написал вот такой скрипт для этого
function checkTempWidth() {
if (!animTemp) {
} else {
let startTemp = 0;
let endTemp = 60;
let el = animTemp;
function interval() {
if (startTemp !== endTemp) {
startTemp++;
animTemp.innerHTML = `${startTemp}`;
} else {
startTemp = endTemp;
}
return startTemp
}
let spaceBellow = window.innerHeight - el.getBoundingClientRect().bottom + el.offsetHeight;
let topDistance = el.getBoundingClientRect().top + el.offsetHeight;
// console.log(topDistance + 'topDistacne');
if (60 < spaceBellow && topDistance > 0) {
setInterval(interval, 100);
} else {
}
}
}
Ответы (1 шт):
Автор решения: Igor
→ Ссылка
let timer;
function checkTempWidth() {
function interval() {
if (startTemp !== endTemp) {
startTemp++;
animTemp.innerHTML = `${startTemp}`;
} else {
timer = clearInterval(timer);
}
}
...
if (!timer)
timer = setInterval(interval, 100);