Убить setInterval
Пытаюсь убить setInterval с помощью clearInterval. Но получается как то не очень.
Дело в том что я пытаюсь двигать один блок с помощью setInterval и все вроде бы ок, но когда блок заканчивает двигаться setInterval все равно работает . Пробую убить его с помощью clearInterval, но тогда блок движется с каким то запозданием Пробовал решить это также с помощью requestAnimationFrame, но тогда блок тоже движется с запозданием. Вот код https://codepen.io/anon/pen/rRJjpE?editors=1010 Работает только в этом режиме |
Скорее всего тебе нужно поместить clearInterval в setInterval и прописать условие при котором setInterval должен удалится:
timerMobileMove = setInterval(() => {
console.log('move it')
const leftCoord = table.getBoundingClientRect().left;
tableHeader.style.left = `${ leftCoord }px`;
if(условие){
clearInterval(timerMobileMove);
}
}, 1);
|
Цитата:
например можно написать условие что таблица прекратила двигаться. Но как дать понять это JS, ведь она и так остановилась, а функция выполняется...? |
Цитата:
|
Цитата:
|
Условием может быть что пользователь упёрся в правую сторону при прокрутке, тогда код будет такой:
timerMobileMove = setInterval(() => {
console.log('move it')
const leftCoord = table.getBoundingClientRect().left;
tableHeader.style.left = `${ leftCoord }px`;
let posScrollX= window.pageXOffset;
let clientWidth= document.querySelector('body').clientWidth;
let widthScroll= document.querySelector('body').scrollWidth;
if(posScrollX + clientWidth - widthScroll == 0){
clearInterval(timerMobileMove);
}
}, 1);
А что ты хочешь реализовать? |
Цитата:
Цитата:
Есть событие touchend - но оно срабатывает когда палец убрали. А пользователь же может не убирать палец. Ну ладно, пофиг, допустим сделаем clearInterval при событии touchend Таймер чиститься но функция все равно продолжает вызываться снова http://skrinshoter.ru/s/180319/VNHS5lPp Как остановить ее окончательно? https://codepen.io/anon/pen/rRJjpE?editors=0010 |
| Часовой пояс GMT +3, время: 07:05. |