我有一个包含不同消息框的站点。这些盒子的头部应该总是有不同的随机颜色。为了防止彼此相邻的消息具有相同的颜色,我使用 splice
从数组 colors
中删除使用过的颜色。在某些时候,数组 colors
将是空的,这就是为什么剩余的框将没有颜色。我如何“重新填充”数组,以便每个元素都获得随机颜色?
这是我的页面:http://www.tdvk.de/ . 黄色是默认的头部颜色。
function selectColor() {
var random = Math.floor(Math.random() * colors.length);
return colors.splice( random, 1 )[0];
}
var colors = [ "rgb(199, 179, 78)", "rgb(127, 195, 133)", "rgb(102, 169, 162)", "rgb(132, 122, 224)" ];
var i = 0;
while ( i != colors.length ) {
$( "tr" ).each(function(i) {
var head = $( ".msgHead", this );
head.css( "background-color", selectColor() );
i++;
});
}
if { i = colors.length ) {
/* reset array and continue */
}
最佳答案
如何重新填充相同的颜色:
if ( i = colors.length ) {
colors = [ "rgb(199, 179, 78)", "rgb(127, 195, 133)", "rgb(102, 169, 162)", "rgb(132, 122, 224)" ];
}
但是就像其他人所建议的那样,还有其他方法可以做到这一点,比如再次环绕到第一个元素而不是拼接,或者随机化其中的值。
关于javascript - "Refill"一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27507547/