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

标签 javascript jquery css angularjs underscore.js

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

这是我到目前为止想出的。

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)

切记我使用的是 coffescript 和 angular js。使用下划线库,所以我可以使用 _.each。

所以我得到了这个结果

enter image description here

您可以看到底部有很多白色方 block ,并且会持续很长时间,因为它会返回无效的十六进制代码,例如 #1223(4 位数字)。

所以这是我的问题,什么是获取所有有效十六进制颜色代码的最佳方法让我们说 6 长我有 3 长(FFF),因为否则它会崩溃而不会得到无效代码。感谢您的所有帮助,我认为这是一个有趣的问题。

我已完成研究,但找不到类似的东西。因为我们希望它们都按顺序排列,例如 111 112 113 等...

最佳答案

我没有使用嵌套循环,而是将十进制从十六进制转换为十六进制。没有更好,只是不同。下面的 fiddle ,显示操作。

*编辑:修改此代码以运行所有 1600 万种颜色。 fiddle 仍然使用每种颜色 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>');
}

https://jsfiddle.net/4tm54u62/1/

关于javascript - 如何在javascript中获取每个有效的十六进制代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36253884/

相关文章:

javascript - 如何使用 jQuery 从 HTML &lt;input type ="date"> 中提取值

javascript - 使用更多的外部文件,而不是将所有内容都塞进一个文件,会降低运行时效率吗?

javascript - 如何删除 li 元素

html - Bootstrap 垂直居中对齐两个文本 block

html - 没有固定列的 HTML 动态布局的 CSS?

javascript - 将 UTC 日期转换为日期时间字符串 Javascript

javascript - 在一行中创建稀疏数组

jquery - 基于 .data() 键/值的过滤元素

javascript - 如何使用 jquery 或 javascript 获取单选按钮 Id 值

javascript - 将 Parent Div 收缩为 Foated Children