我在执行setInterval时遇到问题。我创建了一个滑块,其中setInterval每隔几秒处理一个函数。在几分钟和几轮执行setInterval之后,我注意到了一个额外的延迟。 请建议这里似乎是什么问题?SetInterval在执行多轮执行后会产生延迟
$(document).ready(function() {
var totalItems = $('.sliderItem', '#slider').length;
var currentIndex = $('.itemActive').index() + 1;
var slideTime = 3000;
function goNext (e) {
$('.sliderItem').eq(e).fadeOut(500);
$('.welcomeBox > .welcomeText1', '.sliderItem').eq(e).hide(500);
$('h1', '.sliderItem').eq(e).hide(500);
$('h2', '.sliderItem').eq(e).hide(500);
if(e == totalItems - 1) {
e = 0;
} else {
e++;
};
$('.sliderItem').eq(e).fadeIn(400);
$('h1', '.sliderItem').eq(e).delay(800).show(400);
$('h2', '.sliderItem').eq(e).delay(500).show(400);
$('.welcomeBox > .welcomeText1', '.sliderItem').eq(e).delay(300).show(400);
currentIndex = e;
};
function loader() {
$('.loader').animate({"width":"100%"}, slideTime - 199);
$('.loader').animate({"opacity":"0"}, 199);
$('.loader').animate({"width":"0%"}, 0);
$('.loader').animate({"opacity":"1"}, 0);
};
function autoPlay (e){
timer = setInterval(function() {
loader();
goNext(e - 1);
console.log(e);
if(e == totalItems) {
e = 1;
} else {
e++;
};
currentIndex = e;
}, slideTime);
};
autoPlay(currentIndex);
});
https://codepen.io/Sizoom/pen/ayjNog
你说的是“额外的延迟”。你的意思是它突然间隔更长的时间间隔?或者你的意思是说它随着时间的推移会逐渐增加,所以几分钟后它就不再处于“同步”状态了? –
我看到你的演示,如果问题是指示条不与滑块同步,这是正常的......你应该在指示条的末端用一个事件驱动滑块....类似那样的 – sabotero