如何在vanilla javascript中正确使用scroll eventListener?
如何改进下面的代码? 我只希望使用一个函数来执行scroll事件的代码。我有这样的想法:如何在vanilla javascript中正确使用scroll eventListener?,javascript,Javascript,如何改进下面的代码? 我只希望使用一个函数来执行scroll事件的代码。我有这样的想法: 函数滚动菜单(){ window.addEventListener(“滚动”,()=>{ //做事 }); } 函数能力(){ 设cont=0; window.addEventListener(“滚动”,()=>{ //做事 }; }); } 这是可行的,但我试图改进代码以减少重复性,但它不起作用: 常量滚动菜单=()=>{} 常量滚动能力=()=>{} 函数{ window.addEventListen
函数滚动菜单(){
window.addEventListener(“滚动”,()=>{
//做事
});
}
函数能力(){
设cont=0;
window.addEventListener(“滚动”,()=>{
//做事
};
});
}
这是可行的,但我试图改进代码以减少重复性,但它不起作用:
常量滚动菜单=()=>{}
常量滚动能力=()=>{}
函数{
window.addEventListener(“滚动”,()=>{
滚动菜单();
滚动能力():
});
}
也许这有助于你找到一个起点。(如果在函数中不需要事件参数,显然可以删除它)
var scrollmenu=函数(scrollEvent){
console.log('scrollmenu',window.scrollY)
};
var scrollhabilities=函数(scrollEvent){
console.log('scrollhabilities',window.scrollY)
};
var scrollThings=函数(){
addEventListener(“滚动”,事件=>{
滚动菜单(事件);
能力(事件);
});
}();代码>
div.scroll{
背景颜色:橙色;
高度:1000px;
宽度:400px;
}
在此处移动光标并上下滚动
您可能需要一个去盎司功能。去抖动允许您的函数在指定的时间段内(在下面的示例中为500毫秒)仅触发一次
如果没有此功能,滚动窗口将在连续滚动期间触发数千次。有了这个功能,它只会发射一次。一旦用户暂停指定的时间段(例如500毫秒),该功能将启动。(我将超时设置为500毫秒,以确保可以看到效果-通常您不会指定这么大的数字-也许100毫秒或更少可能更好。)
请注意,有一个称为“油门”的配套功能,与此稍有不同
var cnt=0;
const msg=document.getElementById('msg');
window.addEventListener(“滚动”,()=>{
handleScroll();
});
常量handleScroll=去盎司(()=>{
cnt++;
msg.innerText=cnt;
},500);
函数解盎司(函数、等待、立即){
var超时;
返回函数(){
var context=this,args=arguments;
var later=function(){
超时=空;
如果(!immediate)函数应用(上下文,参数);
};
var callNow=立即&&!超时;
clearTimeout(超时);
超时=设置超时(稍后,等待);
if(callNow)funct.apply(上下文,参数);
};
};代码>
body{height:3000px;}
#味精{
位置:固定;
顶部:20px;
右:2px;
填充:2vh 5vw;
字体大小:5rem;
背景:小麦;
边框:1px实心橙色;
}
我确信您将遇到的一个错误是调用的是scrollofmenu
,但没有名为该函数的函数。我不建议在函数中添加addEventListeners。@MannyAlvarado为什么?我希望了解它。我试图加入函数,因为我想让我的代码更可读。我不懂编程。@imvain2很抱歉,这是一个错误功能**scrollofmenu**与您在函数ScrollThing中看到的**scrollmenu**相同。您可以编辑代码以反映这一点,并且应该这样做。这将帮助你得到更好的建议。此外,如果你能创造一个复制品,它将帮助你获得更多的帮助。