使用Javascript更改背景颜色无法正常工作

时间:2014-03-09 23:07:56

标签: javascript colors background

我已经设置了一个5种颜色的数组,我希望每5秒自动旋转/显示一次背景颜色。我的Javascript代码有效,但我不明白它是如何显示颜色的。

正如您将看到的那样,我希望首先显示绿色,然后是红色,蓝色,橙色和银色。以该顺序。但是,当我加载页面时,它是完全随机的。例如,当页面加载时它将不显示任何内容,然后是蓝色,红色,蓝色,橙色,红色,银色等......完全随机。为什么这样,我做错了什么?

function changebackground() { 
var colors = ["green", "red", "blue", "orange", "silver"];

        setInterval(function() { 
            var bodyback = Math.floor(Math.random() * colors.length);
            var selectedcolor = colors[bodyback];
            document.body.style.background = selectedcolor;
        }, 5000);
    }
window.onload = changebackground();

3 个答案:

答案 0 :(得分:1)

你在这里有一个随机函数导致它

var bodyback = Math.floor(Math.random() * colors.length);
            var selectedcolor = colors[bodyback];

你想要按元素

遍历数组元素

答案 1 :(得分:1)

您正在代码中选择随机索引:

var bodyback = Math.floor(Math.random() * colors.length);

相反,您需要通过存储当前索引并递增它来迭代可能的索引:

function changebackground() { 
    var colors = ["green", "red", "blue", "orange", "silver"];
    var curIndex = 0;

    setInterval(function() { 
        var selectedcolor = colors[curIndex];
        document.body.style.background = selectedcolor;
        curIndex = (curIndex + 1) % colors.length;
    }, 5000);
}
window.onload = changebackground();

确保修改(%)当前索引,以便在到达数组末尾时将其重置为开头。

答案 2 :(得分:1)

我可能会做这样的事情。

var colors=["green", "red", "blue", "orange", "silver"];
var bodyback=0;

setInterval(function(){
document.body.style.backgroundColor=colors[bodyback];
if(bodyback!=4){
   bodyback++;
}else{
   bodyback=0;}
},5000)