function fn1(){
return '#' + Math.floor( Math.random() * 0xffffff ).toString(16);
}
function fn2(){
return '#' + ( Math.random() * 0xffffff<<0 ).toString(16);
}
function fn3(){
var r = Math.floor( Math.random() * 256 );
var g = Math.floor( Math.random() * 256 );
var b = Math.floor( Math.random() * 256 );
return "rgb("+r+','+g+','+b+")";
}
function fn4(){
var color = "#";
for( var i = 0; i < 6; i++ ){
color += ( Math.random()*16 | 0 ).toString(16);
}
return color;
}
function fn5(){
var colorValue = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f";
var colorArray = colorValue.split(",");
var color = "#";
for( var i = 0; i < 6; i++ ){
color += colorArray[ Math.floor( Math.random() * 16 ) ];
}
return color;
}
// 递归方式1
function getRandomColor (){
return '#' + (function (color){
return (color += '0123456789abcdef'[Math.floor(Math.random()*16)])
&& (color.length == 6) ? color : arguments.callee(color);
})('');
// arguments.callee 代表函数名,多用于递归
}
// 递归方式2
//利用第三个参数来判断是否还继续调用自身,当5减为0的时候,一共就有6个字符,再加上最后c=0时前面添加上‘#’。
var getRandomColor = function(){
return (function(s,c){
return (c ? arguments.callee(s,c-1) : '#') +
s[Math.floor(Math.random() * 16)]
})('0123456789abcdef',5)
}
// 我们知道十六进制表示的颜色值是从#000000到#ffffff,后面那六位数是16进制数,相当于"0x000000"到"0xffffff"。这实现的思路是将hex的最大值ffffff先转换为10进制,进行random后再转换回16进制。
var getRandomColor = function(){
return '#'+Math.floor(Math.random()*16777215).toString(16);
}
//将0xffffff转化为10进制
var result = parseInt("0xffffff",16).toString(10);
console.log(result); //16777215
最简单的方法,一行解决
el.style.color = '#' + Math.random().toString(16).slice(2, 8)