一共三种方法,代码如下:
<script>
/*---------------------------- 方法一 -------------------------*/
var colorArr=['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'];
function random(min,max){
if(isNaN(min) || isNaN(max)){
return null;
}
if(min > max){
min ^= max;
max ^= min;
min ^= max;
}
return (Math.random() * (max - min) | 0) + min;
}
function method1(){
var color="#";
for(var i=0;i<6;i++){
color += colorArr[random(0,16)];
}
return color;
}
/*---------------------------- 方法二 ------------------------*/
function method2(){
var color="#";
for(var i=0;i<6;i++){
color += (Math.random()*16 | 0).toString(16);
}
return color;
}
/*---------------------------- 方法三 -------------------------*/
function method3(){
return "#"+(function(color){
return new Array(7-color.length).join("0")+color;
})((Math.random() * 0x1000000 | 0).toString(16));
}
/*----------------------------- 测试 ---------------------------*/
var i=6;
while(i){
//console.log(method1());
//console.log(method2());
console.log(method3());
i--;
}
</script>
第一种:将0-9 a-f储存在数组中,然后每次获取一个随机数,获取6次
第二种:先获取一个十进制的数(范围为十六进制0-ffffff),然后转换为16进制。toString(16)
注意,不足6位则前面补零
第三种:使用了立即执行函数获取随机数,使用数组的join()补足16进制颜色的零位。
代码复杂程度依次增大,推荐使用第二种