我有一个部分十六进制值的数组,这些值将随机字母附加到它们上,形成一个完整的十六进制值。
然后将这些随机应用于 div 层,有效地为它们着色不同的颜色。然而,我目前得到的是“马蒂斯”效果,而不是一种颜色的变化。
如果你强制var color = setHex();
使用getRandomColor函数,你会看到我想要的效果var color = '#CC0';
。
我想知道为什么当我应该只传递一个十六进制值时会发生“马蒂斯”效应。我该如何阻止这个?
请参阅此处的示例:http: //jsfiddle.net/fyQhg/
// Set Hex
function setHex() {
var hexArray = ['#CC0','#FF9','#339'];
var randomHex = hexArray[Math.floor(Math.random() * hexArray.length)];
document.getElementById('inner').innerHTML = randomHex;
return randomHex;
}
// random color
function getRandomColor() {
var letters = '0123456789ABCDEF'.split('');
var color = setHex();
for (var i = 0; i < 3; i++ ) {
color += letters[Math.round(Math.random() * 7)];
}
return color;
}
//ditribute random colors
function buttonClick() {
var i,j, colorblock = document.getElementsByClassName('shade');
for (i=0, j=colorblock.length; i<j; i++) {
colorblock[i].style.background = getRandomColor();
}
}
window.onload = buttonClick();