一段时间后停止功能

时间:2017-07-09 09:53:21

标签: javascript html background

我想制作一个简单的背景,每1400毫秒改变彩虹的颜色,我喜欢this。这是代码:

function onload() {
        var color = ["red", "orange", "yellow", "green", "blue", "indigo", "violet"];
        var body = document.getElementById('body');
        var i = 0;
        function rainbow() {
            if(i == color.length) {i = 0;};
            body.style.backgroundColor = color[i++];
            setTimeout(rainbow, 1400);
        };
        rainbow();
};

onload();

但是在运行此功能6049毫秒后,我希望背景以50毫秒而不是1400毫秒的间隔改变。我该怎么做?

2 个答案:

答案 0 :(得分:2)

你可以像这样改变另一个计时器的间隔。



function onload() {
    var color = ["red", "orange", "yellow", "green", "blue", "indigo", "violet"];
    var body = document.getElementById('body');
    var i = 0;
    var interval = 1400;

    function rainbow() {
        if (i == color.length) {
            i = 0;
        };
        body.style.backgroundColor = color[i++];
        console.log("Interval is: " + interval);
        setTimeout(rainbow, interval);
    };

    var intervalTimer = setTimeout(function() {
        interval = 50;
        clearTimeout(intervalTimer);
    }, 6049);

    rainbow();
};

onload();

<body id='body'>
</body>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

由于初始间隔为1400毫秒,并且您希望在6049毫秒后更改,这意味着在第5和第6个颜色更改(0毫秒,1400毫秒,2800毫秒,4200毫秒,5600毫秒,7000毫秒)之间将发生更改为50毫秒。这意味着我们可以使用(i < 6 ? 1400 : 50)索引将function onload() { var color = ["red", "orange", "yellow", "green", "blue", "indigo", "violet"]; var body = document.getElementById('body'); var i = 0; function rainbow() { document.body.style.backgroundColor = color[i++ % color.length]; setTimeout(rainbow, (i < 6 ? 1400 : 50)); }; rainbow(); }; onload();间隔设置为filezilla.exe -d ftp://user:pass@ftp.myserver.com/folder/* "c:\downloads\" ​ /overwrite /close

filezilla.exe -u "c:\temp\samplefile.exe" ​ftp://user:pass@ftp.myserver.com/folder /overwrite /close