js随机颜色的七种实现方法与代码

发布时间:2020-12-19编辑:脚本学堂
为大家介绍如何在网页中实现随机颜色,本文共提供了七种实现方法,哪一种更适合您的需要呢?快来看看吧。

思路基本上是这样:
一是准备一组漂亮的候选颜色,二是随机生成颜色。

例1,
 

复制代码 代码示例:
<script language="javascript">
var getRandomColor = function(){
return '#' +
(function(color){
return (color += '0123456789abcdef'[Math.floor(Math.random()*16)])
&& (color.length == 6) ? color : arguments.callee(color);
})('');
}
</script>
 

随机生成6个字符然后再串到一起,闭包调用自身与三元运算符让程序变得内敛,初心者应该好好学习这种写法。

例2,
 

复制代码 代码示例:
<script language="javascript">
var getRandomColor = function(){
return (function(m,s,c){
return (c ? arguments.callee(m,s,c-1) : '#') +
s[m.floor(m.random() * 16)]
})(Math,'0123456789abcdef',5)
}
</script>
 

把Math对象,用于生成hex颜色值的字符串提取出来,并利用第三个参数来判断是否还继续调用自身。

实现3
 

复制代码 代码示例:
<script language="javascript">
Array.prototype.map = function(fn, thisObj) {
var scope = thisObj || window;
var a = [];
for ( var i=0, j=this.length; i < j; ++i ) {
a.push(fn.call(scope, this[i], i, this));
}
return a;
};
var getRandomColor = function(){
return '#'+'0123456789abcdef'.split('').map(function(v,i,a){
return i>5 ? null : a[Math.floor(Math.random()*16)] }).join('');
}
</script>
 

这个要求我们对数组做些扩展,map将返回一个数组,然后我们再用join把它的元素串成字符。