Javascript数组-如何选择一个随机十六进制值?
我有一个部分十六进制值的数组,它会随机添加字母,形成一个完整的十六进制值 然后将其随机应用于div层,有效地为其着色不同的颜色。然而,我现在得到的是“马蒂斯”效果,而不是一种颜色的变化 如果强制Javascript数组-如何选择一个随机十六进制值?,javascript,arrays,Javascript,Arrays,我有一个部分十六进制值的数组,它会随机添加字母,形成一个完整的十六进制值 然后将其随机应用于div层,有效地为其着色不同的颜色。然而,我现在得到的是“马蒂斯”效果,而不是一种颜色的变化 如果强制var color=setHex()至var color='#CC0'在getRandomColor函数中,您将看到我想要的效果 我想知道当我只传递一个十六进制值时为什么会发生“马蒂斯”效应。我该怎么阻止这一切 参见此处示例: //设置十六进制 函数setHex(){ var hexArray=['#CC
var color=setHex()代码>至var color='#CC0'
在getRandomColor函数中,您将看到我想要的效果
我想知道当我只传递一个十六进制值时为什么会发生“马蒂斯”效应。我该怎么阻止这一切
参见此处示例:
//设置十六进制
函数setHex(){
var hexArray=['#CC0'、'#FF9'、'#339'];
var randomHex=hexArray[Math.floor(Math.random()*hexArray.length)];
document.getElementById('inner')。innerHTML=randomHex;
返回随机十六进制;
}
//随机颜色
函数getRandomColor(){
变量字母='0123456789ABCDEF'。拆分('');
var color=setHex();
对于(变量i=0;i<3;i++){
颜色+=字母[Math.round(Math.random()*7)];
}
返回颜色;
}
//双属性随机颜色
函数按钮单击(){
var i,j,colorblock=document.getElementsByClassName('shade');
对于(i=0,j=colorblock.length;ivar base=setHex();
//随机颜色
函数getRandomColor(){
变量字母='0123456789ABCDEF'。拆分('');
var颜色=基础;
对于(变量i=0;i<3;i++){
颜色+=字母[Math.round(Math.random()*7)];
}
返回颜色;
}
在方法外部声明基是有效的
解释
在这种方法中:
for (i=0, j=colorblock.length; i<j; i++) {
colorblock[i].style.background = getRandomColor();
}
for(i=0,j=colorblock.length;ivar base=setHex();
//随机颜色
函数getRandomColor(){
变量字母='0123456789ABCDEF'。拆分('');
var颜色=基础;
对于(变量i=0;i<3;i++){
颜色+=字母[Math.round(Math.random()*7)];
}
返回颜色;
}
在方法外部声明基是有效的
解释
在这种方法中:
for (i=0, j=colorblock.length; i<j; i++) {
colorblock[i].style.background = getRandomColor();
}
for(i=0,j=colorblock.length;i每次调用getRandomColor
调用setHex
并拾取另一个随机基色时。只需设置一次基色,将其存储在变量中并使用它
例如:
var hexBase;
function setHex() {
var hexArray = ['#CC0','#FF9','#339'];
if (!hexBase) {
hexBase = hexArray[Math.floor(Math.random() * hexArray.length)];
}
return hexBase;
}
似乎您已经接近这个解决方案,因为您正在将setHex的结果存储在div中,但是您再也没有检查过它。另外,您不需要在DOM中存储东西,因为您可以将它们存储在JavaScript中
最后,如果您想避免使用全局变量,您可以将整个内容包装在一个函数中(例如,您的onload
函数或iLife)。每次调用getRandomColor
并选择另一个随机基色时,只需设置一次基色,将其存储在变量中并使用它
例如:
var hexBase;
function setHex() {
var hexArray = ['#CC0','#FF9','#339'];
if (!hexBase) {
hexBase = hexArray[Math.floor(Math.random() * hexArray.length)];
}
return hexBase;
}
似乎您已经接近这个解决方案,因为您正在将setHex的结果存储在div中,但是您再也没有检查过它。另外,您不需要在DOM中存储东西,因为您可以将它们存储在JavaScript中
最后,如果您想避免使用全局变量,可以将整个内容包装在函数中(例如,您的onload
函数或iLife)。为什么?
因为函数getRandomColor()
调用setHex()
,每次都返回其他内容
如何停止
var color = setHex();
for (i=0, j=colorblock.length; i<j; i++) {
colorblock[i].style.background = getRandomColor(color);
}
}
var color=setHex();
对于(i=0,j=colorblock.length;i为什么?
因为函数getRandomColor()
调用setHex()
,每次都返回其他内容
如何停止
var color = setHex();
for (i=0, j=colorblock.length; i<j; i++) {
colorblock[i].style.background = getRandomColor(color);
}
}
var color=setHex();
对于(i=0,j=colorblock.length;我只是出于好奇,为什么在Math.random()*7
insidegetRandomColor()中使用7
?嗨,Anthony,它让我可以控制颜色。我不想有太多的变化。很高兴知道我如何能做得更好。啊,我明白了,我只是好奇它的重要性-不确定我是否遗漏了什么。它没什么问题!只是出于好奇,你为什么在Math.random()中使用7*7
insidegetRandomColor()
?嗨,Anthony,它让我可以控制颜色。我不想有太多的变化。很高兴知道我如何能做得更好。啊,我明白了,我只是好奇它的意义-不确定我是否错过了什么。它没什么问题!现在很有意义!非常感谢!现在很有意义!非常感谢!