我试过这段代码
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("...");
有帮助吗?
答案 0 :(得分:0)
==
。e
(用于 e lement),因此重复次数减少了。这是您的固定代码。
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}}条件。