为DeadPixel测试更改BackgroundColor

时间:2017-03-19 13:48:09

标签: javascript html

我试过这段代码

function myFunction() {
                var bg = document.bgColor;
                if (bg = "black") {
                    document.getElementById("myDIV").style.backgroundColor = "white";
                } else if (bg = "white") {
                    document.getElementById("myDIV").style.backgroundColor = "red";
                } else if (bg = "red") {
                    document.getElementById("myDIV").style.backgroundColor = "green";
                } else if (bg = "green") {
                    document.getElementById("myDIV").style.backgroundColor = "blue";
                }

但它没有改变backgroundColor,有什么问题?

P.S:我是编码新手,对不起你的眼睛:/

编辑:

我用这个改变了我的代码(谢谢@Weary Adventurer)

var colors = ["black", "white", "red", "green", "blue"];
var color = 0;    

function change_color(){
    var e = document.getElementById("myDIV");

    if(color >= (colors.length - 1)) color = 0;
    else color++;

    e.style.background = colors[color];
}

var timer = setTimeout(change_color, 1000);

但是我想在bg变成蓝色后向另一个页面发送,window.location.replace("...");有帮助吗?

3 个答案:

答案 0 :(得分:0)

  • 要检查某些内容是否与其他内容相同,请使用运算符==
  • 我定义了一个变量e(用于 e lement),因此重复次数减少了。
  • 如果只有一个"动作"要在 if,else,while for 块中,你可以摆脱花括号并将其写在一行中以保持视觉清晰。

这是您的固定代码。

function myFunction() {
    var bg = document.bgColor;
    var e = document.getElementById("myDIV");

    if (bg == "black") e.style.backgroundColor = "white";
    else if (bg == "white") e.style.backgroundColor = "red";
    else if (bg == "red") e.style.backgroundColor = "green";
    else if (bg == "green") e.backgroundColor = "blue";
}

你说你正在做一个像素测试。您可以使用数组定义要循环的颜色:

var colors = ["black", "white", "red", "green", "blue"];

您可以使用setTimeout(callback, ms)功能在执行代码之前设置超时或等待。 您可以将变量设置为函数或将函数作为Javascript中另一个函数的参数传递。因此,如果您希望每隔X毫秒更改一次这些颜色,请使用:

var colors = ["black", "white", "red", "green", "blue"];
var color = 0;    

function change_color(){
    var e = document.getElementById("myDIV");

    if(color >= (colors.length - 1)) color = 0;
    else color++;

    e.style.background = colors[color];
}

var timer = setTimeout(change_color, 1000);

colors是一个字符串数组,color是当前颜色的索引。因此,当colors[color]color时执行0,您将访问数组的第一个元素(因为数组从0开始),即"black"(注意引号)。

函数change_color将元素的背景颜色设置为数组中的下一个颜色。它还确保索引指针color不会离开数组。

答案 1 :(得分:0)

第一步: 您是否将jquery库导入到代码中?

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

如果是: 你在代码上调用这个函数吗?

我在js代码上运行你的页面调用函数myFunction();,它对我来说是完全成功的。如果这对你有用,请说我

答案 2 :(得分:-1)

确保存在id="myDIV"的标记(以区分大小写的方式),确保标记可见。如果您确定标签已正确显示,请确保以这种方式致电myFunction();

setTimeout(myFunction, 30000); //It will run twice/minute

编辑:

此外,您的function中存在语法错误,您使用=的分配运算符代替===if的等于运算符{} {1}}条件。