使用setInterval作为计数器

时间:2018-02-07 19:43:58

标签: javascript

我试图创建一个每10秒更换4次然后重新开始的页面。为此,我制作了一个计数器并将其与我的功能一起传递。它甚至看起来都不像它的装载。

我也尝试使用<body onload="start()">

<script>
var i = 1;

function start(){
    i = setInterval(changeEdu, 10000, i);
}

function changeEdu(i){  
    if(i == 4){
        i = 1;
    }else{
        i++;
    }

    document.getElementById("edu1").src = "left" + i + ".jpg";
    document.getElementById("edu2").src = "right" + i + ".jpg";

    return i;
}

</script>

3 个答案:

答案 0 :(得分:2)

通过将i声明为函数的参数,您的增量只会改变局部变量而不是全局状态。此外,返回值将被忽略。

var i = 1;

function start() {
    setInterval(changeEdu, 10000);
}

function changeEdu() {
//                ^^
    if (i == 4) {
        i = 1;
    } else {
        i++;
    }

    document.getElementById("edu1").src = "left" + i + ".jpg";
    document.getElementById("edu2").src = "right" + i + ".jpg";
}

答案 1 :(得分:0)

我相信这是因为你在i函数开始时重新分配变量start()setInterval返回一个用于取消clearInterval(theNumber)函数的函数的数字。

我也是JS的新手,但我会尝试删除start()函数中的重新分配,然后重试。

答案 2 :(得分:0)

这不是setInterval的工作原理,它不会返回您的返回值。 你需要创建一个闭包。

此外,永远不会调用startInterval()。 将其更改为此并且有效:

<script>
(function(){
    var i = 1;
    function changeEdu(){  
        if(i == 4){
            i = 1;
        }else{
            i++;
        }

//      document.getElementById("edu1").src = "left" + i + ".jpg";
//      document.getElementById("edu2").src = "right" + i + ".jpg";
console.log(i);
    }

    setInterval(changeEdu, 10000);
})();
</script>