随机十六进制颜色

时间:2013-11-07 14:48:39

标签: javascript colors hex

如何使用此代码将style.color更改为十六进制随机值?

hexaTable = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd', 'e', 'f'];
    document.getElementById("button").onclick=
        function(){
            if (x==true) {
                document.getElementById("text").innerHTML="Au revoir";
                document.getElementById("text").style.color="#" + 6 * hexaTable [Math.floor(Math.random() * hexaTable.length)];
                x=false;
            }
            else {
                document.getElementById("text").innerHTML="Bonjour";
                x=true;
            }
        };

3 个答案:

答案 0 :(得分:3)

试试这个:

这将创建随机的十六进制颜色:(使用递归)

   console.log('#' + (function co(a) {
       return(a += [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd', 'e', 'f'][~~(Math.random() * 16)]) && (a.length == 6) ? a : co(a);
})(''))

enter image description here

所以:

document.getElementById("text").style.color='#' + (function co(a) {
           return(a += [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd', 'e', 'f'][~~(Math.random() * 16)]) && (a.length == 6) ? a : co(a);
    })('');

http://jsbin.com/ULenuFa/3/edit

答案 1 :(得分:1)

这方面的一个解决方案是:

'#'+('000000'+parseInt(Math.random()*(256*256*256-1)).toString(16)).slice(-6)

答案 2 :(得分:0)

你实际上必须重复六次六进制[Math.floor(Math.random()* hexaTable.length)],例如:

document.getElementById("text").style.color="#" +
    hexaTable[Math.floor(Math.random() * hexaTable.length)] +
    hexaTable[Math.floor(Math.random() * hexaTable.length)] +
    hexaTable[Math.floor(Math.random() * hexaTable.length)] +
    hexaTable[Math.floor(Math.random() * hexaTable.length)] +
    hexaTable[Math.floor(Math.random() * hexaTable.length)] +
    hexaTable[Math.floor(Math.random() * hexaTable.length)];