首页 > 解决方案 > 如何使用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); });

标签: javascript

解决方案


由于您在事件侦听器中调用 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);
           
           }
       });
   }
}

推荐阅读