Есть функция, нужно чтобы она срабатывала когда скролл доходит до нее

Вот функция:

document.addEventListener('load', count())


function count() {
    document.querySelectorAll('.data-number').forEach((e) => {
        let currentNumber = 0
        let finalNumber = e.getAttribute('data-number')
        finalNumber = parseInt(finalNumber)
        let delay

        switch (true) {
            case (finalNumber < 30):
                delay = 100
                break
            case (finalNumber < 100):
                delay = 40
                break
            case (finalNumber < 300):
                delay = 10
                break
            default:
                delay = 50
                break
        }

        let increment = setInterval(() => {
            e.innerHTML = currentNumber
            if (currentNumber < finalNumber) {
                if (finalNumber > 1000) {
                    currentNumber += 100
                } else {
                    currentNumber++
                }
            } else {
                clearInterval(increment)
            }
        }, delay)
        increment
    })
}

Так же блок, в котором срабатывает скрипт, если нужно:

<div class="statistics" id="statistics">
        <div class="container">
            <div class="stat">
                <div class="stat__item">
                    <div class="data-number" data-number="84">84</div>
                    <div class="stat__text">Дизайнерских проекта</div>
                </div>
                <div class="stat__item">
                    <div class="data-number" data-number="246">246</div>
                    <div class="stat__text">Довольных клиентов</div>
                </div>
                <div class="stat__item">
                    <div class="data-number" data-number="15">15</div>
                    <div class="stat__text">Побед в номинаций</div>
                </div>
                <div class="stat__item">
                    <div class="data-number" data-number="99">99</div>
                    <div class="stat__text">Чашек коффе</div>
                </div>
                <div class="stat__item">
                    <div class="data-number" data-number="24">24</div>
                    <div class="stat__text">Сотрудника</div>
                </div>
            </div>
        </div>
    </div>

Ответы (1 шт):

Автор решения: Даниил Шрамков

Посмотреть результат
Если вы используете ванильный js:

let target = document.querySelector('#statistics');
// top offset to element
let targetPos = target.getBoundingClientRect().top;
// window height
let winHeight = window.innerHeight;
// Really top offset to element
let scrollToElem = targetPos - winHeight;
// flag to check re-scroll
let flag = true;

document.addEventListener('scroll', () => {
    // if we scroll to element
    if (window.scrollY > scrollToElem && flag) {
        count(); flag = false;
    }
    // if we scroll to the element again, then everything will work again
    else if(window.scrollY < scrollToElem && !flag) { flag = true; }
});

Если вы используете jquery:

let target = $('#statistics');
let targetPos = target.offset().top;
let winHeight = $(window).height();
let scrollToElem = targetPos - winHeight;
let flag = true;

$(window).scroll(() => {
    if( $(this).scrollTop() > scrollToElem && flag ) {
        count(); flag = false;
    }
    else if( $(this).scrollTop() < scrollToElem && !flag) { flag = true; }
});
→ Ссылка