Задать вопрос

Как вызвать единожды функцию при многократном срабатывании событии «scroll»?

Всем Добрый вечер.
Есть функция вызывающаяся при событии scroll , внутри этой функции есть другая функция которая срабатывает при определенных условиях. Как сделать так чтоб она сработала только один раз и умерла.

document.addEventListener("DOMContentLoaded", ready);

function ready() {
var getDocument = window;
addHandler(getDocument, "scroll", animateBloks);
}

function addHandler(el, ev, func) {
try{
el.addEventListener(ev, func, false);
}catch(x){
el.attachEvent("on" + ev, func);
}
}

function animateBloks() {
var wHeight = window.innerHeight;
var block = document.getElementsByClassName("steps")[0];
var gPos = block.getBoundingClientRect();
// блок находится ниже области видимости экрана, поэтому проверяю
if( wHeight > gPos.bottom ) {
// здесь будет функция которая должна сработать только один раз

может есть другой способ проверки когда блок целиком окажется видимым в низу экрана при скролле?
  • Вопрос задан
  • 340 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Stepik
    JavaScript с нуля - основы языка и практика для начинающих
    2 недели
    Далее
  • Merion Academy
    Фронтенд-разработчик с нуля
    4 месяца
    Далее
  • Skypro
    JavaScript-разработчик с нуля
    9 месяцев
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillbox
    JavaScript
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 2
miraage
@miraage
Старый прогер
Почитайте про debounce/throttle.
Ответ написан
Комментировать
@Yurajun Автор вопроса
Я тут подумал, и решил что при вызове функции animateBloks() в первый раз присвою какой нибудь класс блоку "block". А в функцие animateBloks() буду дополнительно проверять наличии этого класса, если есть то дальше через if не пройдет вызов повтор этой функции.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы