我试图让这个循环在 javascript 中工作,以便它以不同的时间间隔打开和关闭 Accordion ....它只运行一次循环然后停止。我正在用头撞墙问为什么?
var i;
i = 0;
while (i < 999) {
setTimeout((function() {
return $("#money-slide").collapse("show");
}), 0);
setTimeout((function() {
return $("#money-slide").collapse("hide");
}), 4000);
setTimeout((function() {
return $("#collaboration-slide").collapse("show");
}), 4000);
setTimeout((function() {
return $("#collaboration-slide").collapse("hide");
}), 8000);
setTimeout((function() {
return $("#efficiency-slide").collapse("show");
}), 8000);
setTimeout((function() {
return $("#efficiency-slide").collapse("hide");
}), 12000);
setTimeout((function() {
return $("#communication-slide").collapse("show");
}), 12000);
setTimeout((function() {
return $("#communication-slide").collapse("hide");
}), 16000);
i++;
}
使用
setInterval
代替
setTimeout
此外,setTimeout
和 setIterval
都是 async ,因此从中返回任何内容都不会执行任何操作。
试试这个
var i = 0;
var timer1, timer2, timew3, timer4, timer5, timer6, timer7, timer8;
setAnimationIntervals();
i = 0;
function setAnimationIntervals() {
timer1 = setInterval((function () {
$("#money-slide").collapse("show");
}), 0);
timer2 = setInterval((function () {
$("#money-slide").collapse("hide");
}), 4000);
timer3 = setInterval((function () {
$("#collaboration-slide").collapse("show");
}), 4000);
timer4 = setInterval((function () {
return $("#collaboration-slide").collapse("hide");
}), 8000);
timer5 = setInterval((function () {
$("#efficiency-slide").collapse("show");
}), 8000);
timer6 = setInterval((function () {
$("#efficiency-slide").collapse("hide");
}), 12000);
timer7 = setInterval((function () {
$("#communication-slide").collapse("show");
}), 12000);
timer8 = setInterval((function () {
$("#communication-slide").collapse("hide");
i++;
if (i === 999) {
clearAnimationIntervals();
}
}), 16000);
}
function clearAnimationIntervals {
clearInterval(timer1);
clearInterval(timer2);
clearInterval(timer3);
clearInterval(timer4);
clearInterval(timer5);
clearInterval(timer6);
clearInterval(timer7);
clearInterval(timer8);
}