Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
切换函数的Javascript计时器_Javascript_Timer_Switch Statement - Fatal编程技术网

切换函数的Javascript计时器

切换函数的Javascript计时器,javascript,timer,switch-statement,Javascript,Timer,Switch Statement,我有三个名为toggle1、toggle2、toggle3的函数链接到我的html 我想制作一个计时器,以5秒的延迟调用每个函数,5秒用于测试 我写了这段代码,但不起作用。关于如何让它工作,有什么建议吗 我在页面加载时使用了函数init function timer() { var i = 1; var delay = 5000; for (i, i = 3, i++) { switch (i) { case 1:

我有三个名为toggle1、toggle2、toggle3的函数链接到我的html

我想制作一个计时器,以5秒的延迟调用每个函数,5秒用于测试

我写了这段代码,但不起作用。关于如何让它工作,有什么建议吗

我在页面加载时使用了函数init

function timer() {
    var i = 1;
    var delay = 5000;
    for (i, i = 3, i++) {
        switch (i) {
            case 1:
                toggle1();
                delay;
                break;
            case 2:
                toggle2();
                delay;
                break;
            case 3:
                toggle3();
                delay;
                break;
        }
    }
}
第一个问题是for循环错误,将其更改为此应该可以让您开始:

for (var i = 0; i < 3; i++) {

此外,每个开关语句中的延迟变量是冗余的。首先尝试更改for循环,这将使您开始写入方向。

您有两个基本的语法问题,这可能会导致问题

1 for循环的语法不以分隔,应该有


2应该有我你可以实施你自己的睡眠方法,并像这样使用它:

toggle1();
sleep(5000);
toggle2();
sleep(5000);
toggle3();
当然,这很简单/幼稚。

尝试使用该函数

function init () {
    timer(1);
}
function timer(n) {
    var delay = 5000;
    switch (n) {
        case 1:
            toggle1();
            setTimeout(function(){ timer(2); }, delay)
            break;
        case 2:
            toggle2();
            setTimeout(function(){ timer(3); }, delay)
            break;
        case 3:
            toggle3();
            break;
    }
}
var counter = 0;

function Toogle1() {
    console.log("1");
}

function Toogle2() {
    console.log("2");
}

function Toogle3() {
    console.log("3");
}


function TimeMachine() {
    switch (counter) {
        case 0:
            Toogle1();
            counter++;
            break;

        case 1:
            Toogle2();
            counter++;
            break;

        default:
            Toogle3();
            counter = 0;
            break;
    }
}

setInterval("TimeMachine()", 1000);

而且使用延迟变量似乎也没用。@格林先生把我的答案改成了一个起点,我认为延迟应该是延迟;要使其工作,您的代码应该是这样的。这篇文章下面的评论不建议使用这种方法。你读过关于这个答案的评论了吗?这是唯一天真的部分!
var counter = 0;

function Toogle1() {
    console.log("1");
}

function Toogle2() {
    console.log("2");
}

function Toogle3() {
    console.log("3");
}


function TimeMachine() {
    switch (counter) {
        case 0:
            Toogle1();
            counter++;
            break;

        case 1:
            Toogle2();
            counter++;
            break;

        default:
            Toogle3();
            counter = 0;
            break;
    }
}

setInterval("TimeMachine()", 1000);
delayedExec([toggle1, toggle2, toggle3], 5000);

function delayedExec(fns, delay, index) {
    index = index || 0;
    if (index === fns.length) return;
    fns[index]();
    setTimeout(delayedExec.bind(null, fns, delay, ++index), delay);
}
<html>
    <head>
    <script type="text/javascript">
    var
    hMsg,
    CntFunc = {
        curr: 0,
        funcList: [],

        play: function () {
            CntFunc.funcList[CntFunc.curr]();
            CntFunc.next();
        },

        next: function () {
            if (CntFunc.curr >= CntFunc.funcList.length-1)
                CntFunc.curr = 0;
            else {
                CntFunc.curr++;
                setTimeout(CntFunc.play, 5000);
            }
        }
    };

    var toggle1 = function() {hMsg.innerHTML = "1";}
    var toggle2 = function() {hMsg.innerHTML = "2";}
    var toggle3 = function() {hMsg.innerHTML = "3";}

    window.onload = function () {
        hMsg = document.getElementById("msg");
        CntFunc.funcList = [toggle1, toggle2, toggle3];
        CntFunc.play();
    }
    </script>
    </head>
    <body>
        <div id="msg"></div>
    </body>
</html>