javascript - 使用递归函数使div的背景反复改变颜色

标签 javascript

我试图让div的背景颜色反复改变。 (即让它在两种颜色之间无限闪烁。)我使用 setTimeout 使函数在运行后再次调用自身,但它似乎只运行一次,然后就停止了。我尝试过使用 if 子句和开关,但没有成功。我缺少什么?感谢您提供的任何建议。

var myDiv = document.getElementById("animatebox");

function doAnimate() {

    switch (true) {
        case myDiv.style.backgroundColor = "red":
             myDiv.style.backgroundColor = "blue";
             break;
        case myDiv.style.backgroundColor = "blue":
             myDiv.style.backgroundColor = "red";
             break;
    };

    setTimeout(doAnimate, 20);

};

doAnimate();

最佳答案

您的代码确实每 20 毫秒运行一次,但您没有正确使用 switch。此外,如果您读取 backgroundColor 属性,它可能会返回一些其他颜色表示形式,例如红色的“rgb(255,0,0)”。试试这个:

var myDiv = document.getElementById("animatebox");
var i = 0;    

function doAnimate() {
    if (i++ % 2)
        myDiv.style.backgroundColor = "blue";
    else
        myDiv.style.backgroundColor = "red";
  
    setTimeout(doAnimate, 20);
};
    
doAnimate();

    
#animatebox { width: 50px; height: 50px; background-color: red; }
<div id="animatebox">Flicker!</div>

关于javascript - 使用递归函数使div的背景反复改变颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26371291/

相关文章:

javascript - 在 EaselJS 中将滤镜应用于动画 Sprite

javascript - 行重新排序后数据表新添加的行消失

javascript - 等待ajax .html成功加载对象

javascript - 使用 KendoUI 饼图,如何删除空白区域?

javascript - 突出显示 sweetAlert 中的默认文本输入

javascript - 如何使用 Chai 检查对象中的值?

javascript - 突变(["hello", "Hello"]); - 如果 Hello 等于 hello 但我的代码返回 false,则返回 true?

javascript - 获取下一个可用数字,跳过数组中的项目

javascript - 记住您的选择的静音脚本

php - 使用 PHP 或 Javascript 裁剪图像