2016-11-05 3 views
1

Я создаю динамическую страницу прокрутки, где я решил использовать событие wheel, чтобы обнаружить прокрутку пользователя. Как вы знаете, это событие имеет параметр deltaY, который обновляется динамически (несколько раз для одного прокрутки). Я хочу, чтобы скрипт возвращал true один раз deltaY больше 100. Однако он обновляется снова и снова, заставляя мою функцию стрелять несколько раз. Есть ли способ «испечь» (можно изменить один раз) значение true?Есть ли способ «испечь» переменную?

window.addEventListener('wheel', func) 
 

 
function func(event){ 
 
    if(event.deltaY>100){ 
 
    var p = document.createElement('p'); 
 
    var text = document.createTextNode("You scrolled over 100"); 
 
    p.appendChild(text); 
 
    document.body.insertBefore(p, document.getElementsByTagName('p')[0]); 
 
    } 
 
}
<p>Scroll the page down \/ and keep scrolling</p>

+2

Вы можете предоставить некоторый код? По крайней мере, ваша попытка не работает должным образом. – Aer0

+0

Вы хотите функцию, выполняющую _once_, когда выполняется условие? – vlaz

+0

@vlaz Да. Как только дельта больше 100. – MaxelRus

ответ

1

Вы можете удалить слушателя сразу был добавлен элемент. таким образом функция не будет продолжать срабатывать.

window.addEventListener('wheel', func) 

function func(event){ 
    if(event.deltaY>100){ 
    var p = document.createElement('p'); 
    var text = document.createTextNode("You scrolled over 100"); 
    p.appendChild(text); 
    document.body.insertBefore(p, document.getElementsByTagName('p')[0]); 
    window.removeEventListener('wheel',func); 
    } 
} 

https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener

Смежные вопросы