1

如何使用此代码将 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;
            }
        };
4

3 回答 3

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);
})(''))

在此处输入图像描述

所以 :

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

于 2013-11-07T14:53:44.840 回答
1

一种解决方案是:

'#'+('000000'+parseInt(Math.random()*(256*256*256-1)).toString(16)).slice(-6)
于 2013-11-07T15:13:49.780 回答
0

您实际上必须重复 hexaTable[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)];
于 2013-11-07T14:54:04.717 回答