将数字转换为十六进制值,但使它们成为两位数
Turning numbers to hex values, but make them double digits
>问题:我正在构建一个使用数字到十六进制转换器功能的绘图板应用程序。目前,它们仅返回某些转换的个位数。
示例:r:0,g:0, b:0
返回 #000
,而不是 #000000
。我相信这就是为什么我无法正确更新颜色的原因,只有值才能工作。
期望结果:我希望将我的数字转换为两位数。所以R:0,G:0,B:
)会转换为#000000
而不是#000
,尽管它们是同一件事,但根据我的理解,其他颜色依赖于两位数。基本上,我希望我的所有数字到十六进制转换都是 6 位数字。
[已解决]:更改了将我的值获取到 css rgb(r,g,b)
而不是使用十六进制值的方式。
捷斯宾 http://jsbin.com/doqiwocufa/edit?html,css,js,console,output
Javascript:
var $red = 0;
function changeRedNumboxValue(value) {
var $numBox = $('#redNumber');
$red = value;
$numBox.val($red);
console.log($red);
}
function changeRedSliderVal(value) {
var $slider = $('#red');
$red = value;
$slider.val($red);
console.log($red);
}
var $green = 0;
function changeGreenNumboxValue(value) {
var $numBox = $('#greenNumber');
$green = value;
$numBox.val($green);
console.log($green);
}
function changeGreenSliderVal(value) {
var $slider = $('#green');
$green = value;
$slider.val($green);
console.log($green);
}
var $blue = 0;
function changeBlueNumboxValue(value) {
var $numBox = $('#blueNumber');
$blue = value;
$numBox.val($blue);
console.log($blue);
}
function changeBlueSliderVal(value) {
var $slider = $('#blue');
$blue = value;
$slider.val($blue);
console.log($blue);
}
//CONVERT RGB TO HEX
function rgbToHex() {
$hexRed = $red.toString(16);
$hexGreen = $green.toString(16);
$hexBlue = $blue.toString(16);
console.log($hexRed);
console.log($hexGreen);
console.log($hexBlue);
return '#' + $hexRed + $hexGreen + $hexBlue;
}
//UPDATE COLOR BASED ON HEX VALUES
function updateColor() {
$colorChosen = $('#color-chosen');
$color = rgbToHex();
$colorChosen.css('background-color', $color);
}
updateColor();
.HTML:
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<span>Blue</span>
<input id="red" type="range" name="amount2" value="0" min="0" max="255" oninput="changeNumboxValue(this.value)">
<input id="redNumber" type="number" name="amountInput2" value="0" min="0" max="255" oninput="changeSliderVal(this.value)">
</body>
</html>
.CSS:
#color-chosen {
border: 1px solid black;
width: 100px;
height: 100px;
margin: 0 auto;
}
你需要
一些用0
填充并用String.prototype.slice()
切割字符串:
slice() 方法提取字符串的一部分并返回一个新字符串。
$hexRed = ('0' + $red.toString(16)).slice(-2);
实际上,#ABC
将被解释为#AABBCC
。如果您只使用十六进制的 3 个数字,则它的颜色代码将是第一个字母的两倍、第二个字母的两倍和第三个字母的两倍。这意味着#000
与#000000
相同。对于其他颜色,您可能需要r:AB
等。在这种情况下,g
,b
需要用两个字母表示。
我认为这是你的问题。有时您会得到 1 个字母表示一种颜色,2 个字母表示其他颜色,从而导致 5 个六位数字转换。
相关文章:
- 文本框应该只允许十六进制值
- 正在将unicode转换为十六进制
- 在js中将字符串转换为十六进制
- 如何在JavaScript中将数字表示为十六进制
- 带有 TCP/IP 通信的 JavaScript 十六进制代码
- 用Javascript正则表达式过滤十六进制数字
- 如何创建和递增2或3位十六进制数字
- 将html代码转换为十六进制
- 如何检查十六进制颜色是否为“”;太黑”;
- 将十六进制字符串转换为字节数组
- 如何在HTML5 / javascript中查找十六进制值的特定位或数字
- JavaScript 中两个十六进制字符串的 XOR
- 将数字转换为十六进制值,但使它们成为两位数
- 在 JavaScript 中将原始图像的十六进制字符串转换为位图图像
- 添加两个十六进制数字 javascript 与位移
- javascript:将十六进制值转换为带符号的8位整数
- 十六进制颜色码的按位补码总是返回6个字符吗?
- Javascript颜色选择器与8位十六进制
- 将24位十六进制数转换为十进制,加1,然后再转换回来
- 如何在Node.js中将十六进制位模式(字符串)转换为float