2016-11-05 101 views
1

我正在创建动态滚动页面,我决定使用wheel事件来检测用户的滚动。正如你可能知道这个事件有一个deltaY参数动态更新(一次滚动几次)。一旦deltaY大于100,我希望脚本返回true。但是它会一遍又一遍地更新,导致我的函数拍摄数次。有没有办法'烘烤'(能够改变一次)这个价值的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