如何在javascript中获取所有有效的十六进制代码

如何在javascript中获取所有有效的十六进制代码,javascript,jquery,css,angularjs,underscore.js,Javascript,Jquery,Css,Angularjs,Underscore.js,这是我两天前开始工作的一件小事,我想这会是一个快速的大脑问题,然后我会回去吃午饭。然而,我在挣扎。我想得到所有有效十六进制颜色代码的数组。最好不要使浏览器崩溃 这就是我到目前为止想到的 app.directive 'randomColor', () -> link: (scope) -> scope.colors = new Array col = 0x0 while col <= 0xFFF if (col > 0x111 &am

这是我两天前开始工作的一件小事,我想这会是一个快速的大脑问题,然后我会回去吃午饭。然而,我在挣扎。我想得到所有有效十六进制颜色代码的数组。最好不要使浏览器崩溃

这就是我到目前为止想到的

app.directive 'randomColor', () ->
  link: (scope) ->
    scope.colors = new Array
    col = 0x0
    while col <= 0xFFF
      if (col > 0x111 && col < 0xFFF)
        scope.colors.push '#' + col
      col++
    autocolor = (hexcode) ->
      colorChange = () ->
        $("#colorvomit").append("<span style='padding: 1px 10px 1px 10px;background-color: " +hexcode+";border: 1px solid black;'></span>")
      setTimeout(colorChange, 5000)
    _.each(scope.colors, autocolor)
app.directive'randomColor',()->
链接:(范围)->
scope.colors=新数组
col=0x0
而列0x111&&col<0xFFF)
scope.colors.push“#”+列
上校++
自动颜色=(十六进制代码)->
颜色变化=()->
$(“#colorvomit”)。追加(“”)
设置超时(颜色更改,5000)
_.each(scope.colors、autocolor)
我在使用coffescript和AngularJS。使用下划线库,这样我就可以使用u.each

所以我得到了这个结果

你可以看到底部有很多白色的方块,它会持续很长时间,因为它返回的是无效的十六进制代码,比如#1223(4位数)

所以我的问题是,获取所有有效十六进制颜色代码的最佳方法是什么?比如说6长,我有3长(FFF),因为它会崩溃,否则不会获取无效代码。谢谢你的帮助,我想这是一个有趣的问题


我已经做了研究,找不到类似的东西。因为我们希望它们都按顺序排列,就像111 112 113 ect…

记住256*256*256=16777216,所以执行起来需要一些时间

var result = '';
for(var i=0;i<256;i++)
    for(var j=0;j<256;j++)
        for(var k=0;k<256;k++)
           {r = i.toString(16);
           g = j.toString(16);
           b = k.toString(16);
             if(r.length!=1||g.length!=1||b.length!=1){
        if(r.length==1)r='0'+r;
        if(g.length==1)g='0'+g;
        if(b.length==1)b='0'+b;
        }//will use 3 length color unless one of r,g or b is to digit then 6 length will be used.
            result += r + g + b + '<br/>';
        }

document.write(result);
var结果=”;

对于(var i=0;i而不是使用嵌套循环,我只是将十进制从/转换为十六进制。不是更好,只是不同。下面是小提琴,显示操作

*编辑:此代码被修改为运行所有1600万种颜色。小提琴仍然使用每种颜色8位(
\000;
简短符号),因此不会永远运行

var $cv= $("#colorvomit");
for(var col=parseInt("000000", 16); col<=parseInt("ffffff", 16); col++) {
    var hex = col.toString(16);
  hex = '0'.repeat(6-hex.length) + hex;
    $cv.append('<span style="background-color:#'+hex+';"> &nbsp; </span>');
}
var$cv=$(“#colorvomit”);

对于(var col=parseInt(“000000”,16)它不是作弊,因为我们需要十六进制代码的数组。不是使用RGB代码。我可能在这里错了,但可能代码没有漏掉一些颜色。这个代码生成十六进制代码。我只是使用了r、g和b变量来生成代码meaningful@Morphasis,当我更正代码时,我错误地删除了一些代码ust已更正。您好,我正要启动并测试它。看到它看起来不错会很有趣,让我们看看它是否运行过:)我已经创建了一个演示:(这太酷了,我想实现的是,有一种方法可以使用6个十六进制代码。啊,我运行了它。很抱歉,我必须在另一个家伙第一个回答之前将答案告诉他,而且也是正确的。但你的解决方案更多地是沿着显示屏进行的,我想扔掉,我想再次感谢你,这真的很有帮助。没问题,完全理解。此外,还修改了我的答案,以显示如何修改以获得完整的每种颜色16位结果,并包括完整的0x000到0xfff范围。Fiddle仍显示8位…在16位中花费的时间太长。
var $cv= $("#colorvomit");
for(var col=parseInt("000000", 16); col<=parseInt("ffffff", 16); col++) {
    var hex = col.toString(16);
  hex = '0'.repeat(6-hex.length) + hex;
    $cv.append('<span style="background-color:#'+hex+';"> &nbsp; </span>');
}