数组的随机颜色

时间:2013-02-19 02:48:55

标签: javascript html random hex background-color

我正在寻找使用JavaScript构建的东西,它将从给定的十六进制颜色数组中选择一个随机值(背景颜色)并将其应用于给定的div元素。

任何人都知道这样做的好方法吗?似乎没有什么对我有用,但我不是一个真正精通JS的人。

3 个答案:

答案 0 :(得分:14)

这个怎么样?

var rgb = [];

for(var i = 0; i < 3; i++)
    rgb.push(Math.floor(Math.random() * 255));

myDiv.style.backgroundColor = 'rgb('+ rgb.join(',') +')';

如果要将其限制为已知颜色,可以创建颜色数组并随意选择它。

var colors = ['red', 'green', 'blue', 'orange', 'yellow'];

myDiv.style.backgroundColor = colors[Math.floor(Math.random() * colors.length)];

<强> JSFiddle

更新 - 使用第一种方法应用于所有.post-content

var divs = document.querySelectorAll('.post-content');

for(var i = 0; i < divs.length; i++)
    divs[i].style.backgroundColor = 'rgb('+ rgb.join(',') +')';

如果您想单独为每个.post-content应用随机背景,则可以执行此操作。

var divs = document.querySelectorAll('.post-content');

for(var i = 0; i < divs.length; i++) {
    var rgb = [];

    for(var i = 0; i < 3; i++)
        rgb.push(Math.floor(Math.random() * 255));

    divs[i].style.backgroundColor = 'rgb('+ rgb.join(',') +')';
}

上次更新 - 正如您所提到的那样使用jQuery。

var colors = ['red', 'green', 'blue', 'orange', 'yellow'];

$('.post-content').each(function() {
    $(this).css('background-color', colors[Math.floor(Math.random() * colors.length)]);
});

答案 1 :(得分:3)

此示例从任何数组返回一个随机项, 如果你传递一个非假的参数,它会从数组中删除该项。

Array.prototype.getRandom= function(cut){
    var i= Math.floor(Math.random()*this.length);
    if(cut && i in this){
        return this.splice(i, 1)[0];
    }
    return this[i];
}

//示例:

var colors= ['aqua', 'black', 'blue', 'fuchsia', 'gray', 'green', 
'lime', 'maroon', 'navy', 'olive', 'orange', 'purple', 'red', 
'silver', 'teal', 'white', 'yellow'];

警报(colors.getRandom());

答案 2 :(得分:0)

不确定这在性能方面有多好,但是如果你已经在使用lodash,它可以很简单:

// initialising array of colours
let colours = ['tomato', 'salmon', 'plum', 'olive', 'lime', 'chocolate']

// getting a random colour
colours = _.shuffle(colours); // you can shuffle it once, or every time
let hereIsTheColour = colours.pop() // gets the last colour from the shuffled array (also removes it from the array)