Этот вопрос закрыт для ответов, так как повторяет вопрос Как исправить баг?
Relow
@Relow
Ничего не умею

Как прервать setTimeout?

Вот код:
var header = document.querySelector('.sticky');

window.onscroll = function showHeader () {
	if (window.pageYOffset > 138) {
		header.classList.remove('goback');
		header.classList.add('sticky-header');
	} else {
		header.classList.add('goback');
		var timerId = setTimeout(function () {
  		header.classList.remove('sticky-header');
		}, 250)
	}
}

if (window.pageYOffset > 138) {
	header.classList.add('sticky-header');
}

Нужно чтобы if прерывало
var timerId = setTimeout(function () {
  		header.classList.remove('sticky-header');
		}, 250)

Пробовал clearTimeout(timerId); - не помогло
Вот весь код: https://github.com/TheRelow/5CRM
  • Вопрос задан
  • 108 просмотров
Ответы на вопрос 1
dollar
@dollar
Делай добро и бросай его в воду.
Потому что timerId у тебя локальный. Он виден только внутри функции, и не сохраняется по завершению функции. Так что где бы ты его ни использовал, timerId будет не определён. Объявляй его вне функции или запоминай в чём-то, что существует дольше.
spoiler
var header = document.querySelector('.sticky');
var timerId; //объявляем глобально!

window.onscroll = function showHeader () {
  if (window.pageYOffset > 138) {
    header.classList.remove('goback');
    header.classList.add('sticky-header');
  } else {
    header.classList.add('goback');
    timerId = setTimeout(function () {
  		header.classList.remove('sticky-header');
    }, 250)
  }
}

if (window.pageYOffset > 138) {
  header.classList.add('sticky-header');
}
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы