Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在vanilla javascript中正确使用scroll eventListener?_Javascript - Fatal编程技术网

如何在vanilla javascript中正确使用scroll eventListener?

如何在vanilla javascript中正确使用scroll eventListener?,javascript,Javascript,如何改进下面的代码? 我只希望使用一个函数来执行scroll事件的代码。我有这样的想法: 函数滚动菜单(){ window.addEventListener(“滚动”,()=>{ //做事 }); } 函数能力(){ 设cont=0; window.addEventListener(“滚动”,()=>{ //做事 }; }); } 这是可行的,但我试图改进代码以减少重复性,但它不起作用: 常量滚动菜单=()=>{} 常量滚动能力=()=>{} 函数{ window.addEventListen

如何改进下面的代码?

我只希望使用一个函数来执行scroll事件的代码。我有这样的想法:

函数滚动菜单(){
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**相同。您可以编辑代码以反映这一点,并且应该这样做。这将帮助你得到更好的建议。此外,如果你能创造一个复制品,它将帮助你获得更多的帮助。