javascript - 如何使用javascript在foreach中设置一次间隔
问题描述
当“if”语句为真时,我需要为数组中的每个滑块元素设置一次间隔,但每次“if”语句为真时,我的代码都会设置无限间隔。这是我的js代码:
const sliders = [realestateSlider,carsSlider,spectechnicSlider,motorcyclesSlider,partsSlider,beautySlider,clothesSlider,bestsellersSlider,topproductsSlider,salesSlider];
function checkIfIntoView(sliders){
sliders.forEach(function(slider,index){
if(slider.getBoundingClientRect().top <= window.innerHeight || document.documentElement.innerHeight){
setInterval(function(){slider.scrollLeft += scrollWidth;},1000);
}
});
}
window.addEventListener('wheel',function(event){ checkIfIntoView(sliders); });
解决方案
由于您在事件侦听器中调用 checkIfIntoView 函数,因此事件侦听器将在每次发生轮上事件时老虎该函数。因此,如果您想在车轮事件触发后调用 checkIfIntoView 函数,请使用布尔变量。
let ran = false;
function checkIfIntoView(sliders){
if (!ran) {
ran = true
sliders.forEach(function(slider,index){
if(slider.getBoundingClientRect().top <= window.innerHeight || document.documentElement.innerHeight){
setInterval(function(){slider.scrollLeft += scrollWidth;},1000);
}
});
}
}
推荐阅读
- git - 在 Git 中保持 lilypond 分数彼此分开
- angular - YouTube IFrame API 和 Angular 8 路由问题
- asp.net-core - appsettings.json 文件不在 .net 核心控制台项目中
- android - 从 Firebase 获取变量后如何正确提取变量
- amazon-web-services - 在 Delphi 10.3 中提出 AWS 签名版本 4 请求,将 Python 代码移植到 Delphi
- flutter - Flutter 中的“with”关键字
- django - 直接从 models.Model 子类化用户模型,而不是在 Django 中使用自定义用户模型
- asynchronous - 如何理解 Kotlin 协程?
- python - 将对应的单词打印到单词计数(Bag-of-Words)
- c# - 我遇到以下错误 System.Data.SqlClient.SqlException: in C#