javascript - 存储十六进制 HTML 颜色作为数值转换返回不同的颜色

标签 javascript html css

我试过解决方案是这个 post但这似乎对我没有帮助。我必须将十六进制颜色存储到数字中并能够成功地将其转换回十六进制颜色

我在下面放了一个工作代码

hexToNum = () => {
  const orignalColor = '#00FF7B';
  const newStr = orignalColor.replace('#', '');
  document.querySelector('#num').value = parseInt(newStr, 16);;
}

NumToHex = () => {
  const el = document.querySelector('#str');
  const num = el.value;
  const str1 = num.toString(16);
  console.log(str1);
  el.style.borderColor = '#' + str1;
  el.style.backgroundColor = '#' + str1;
}
.color1 {
  border-radius: 50%;
  width: 21px;
  height: 21px;
  border: 3px solid;
  box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .13);
  border-color: #00FF7B;
  background-color: #00FF7B;
}

.color2 {
  border-radius: 50%;
  width: 21px;
  height: 21px;
  border: 3px solid;
  box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .13);
}
<div class='color1'></div>

<br/>
<button onclick="hexToNum()">Get Numeric Value </button> <input type='text' id='num'>


<br/><br/><br/>
<div class='color2'></div>

<br/><br/>
<input type='text' id='str'>
<button onclick="NumToHex()">Set Color From Numeric Value </button>

最佳答案

正如@reporter 之前注意到的,input 值为string

因此您必须使用 parseInt 或其他方法将其转换为 number,例如

const num = +el.value;

然后转换为十六进制并用 0 左填充结果:

const str1 = num.toString(16).padStart(6, '0');

请看下面的片段:

hexToNum = () => {
  const orignalColor = '#00FF7B';
  const newStr = orignalColor.replace('#', '');
  document.querySelector('#num').value = parseInt(newStr, 16);;
}

NumToHex = () => {
  const el = document.querySelector('#str');
  const num = +el.value;
  const str1 = num.toString(16).padStart(6, '0');
  console.log(str1);
  const c2 = document.querySelector('.color2')
  c2.style.borderColor = '#' + str1;
  c2.style.backgroundColor = '#' + str1;
}
.color1 {
  border-radius: 50%;
  width: 21px;
  height: 21px;
  border: 3px solid;
  box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .13);
  border-color: #00FF7B;
  background-color: #00FF7B;
}

.color2 {
  border-radius: 50%;
  width: 21px;
  height: 21px;
  border: 3px solid;
  box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .13);
}
<div class='color1'></div>

<br/>
<button onclick="hexToNum()">Get Numeric Value </button> <input type='text' id='num'>


<br/><br/><br/>
<div class='color2'></div>

<br/><br/>
<input type='text' id='str'>
<button onclick="NumToHex()">Set Color From Numeric Value </button>

希望对您有所帮助。

关于javascript - 存储十六进制 HTML 颜色作为数值转换返回不同的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56955471/

相关文章:

javascript - 在子 Controller 中触发时,Ionic AngularJS 父动画无法正确运行

html - 基于宽度而不是高度的垂直边距的 CSS %

html - 表格单元格元素的大小问题,为什么?

html - BEM block 、命名和嵌套

html - 如何向 div 添加空格但同时保留 div 中的文字?

html - 通过 CSS 增加垂直导航栏宽度的问题

javascript - 在 JavaScript 中对空数组使用 for each 循环

javascript - Chrome 扩展程序下载上下文菜单

javascript - HTML 日期选择器 View

ios - 在文件名中缓存 list 空间