javascript - 挣扎于超时函数javascript

标签 javascript loops settimeout

<分区>

我试图让这个循环在 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

此外,setTimeoutsetIterval 都是 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);
}

关于javascript - 挣扎于超时函数javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16971247/

相关文章:

javascript - 我如何在 Screeps 中攻击敌人

javascript - 使用 Ionic 2,如何通过模式更改基于登录状态的按钮,以便在登录后将您发送到另一个页面?

c++ - Break 关键字是退出 for 循环的最有效方法吗? C/C++

javascript - Typescript - for 循环中动态变量的 setTimeout 自定义时间

javascript - setTimeout() 触发时间比预期早一点

javascript - 将本地函数传递给 setTimeout()

javascript - 通过将函数传递给 setCount 来修复陈旧闭包的副作用

php - 在网络上读取 PNG 元数据

c++ - 我可以从基于 for 循环的范围内获取项目的索引吗?

javascript - 在 javascript 中迭代整数,其中每个值等于一位数字