Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何计算较暗的十六进制颜色_Javascript - Fatal编程技术网

Javascript 如何计算较暗的十六进制颜色

Javascript 如何计算较暗的十六进制颜色,javascript,Javascript,使用我试图计算颜色的较暗范围,但输出看起来不像正确的十六进制值(缺少一个值) 我做错了什么 函数颜色(col,amt){ var usePound=假; if(列[0]==“#”){ col=col.slice(1); usePound=true; } var num=parseInt(col,16); var r=(数量>>16)+金额; 如果(r>255)r=255; 如果(r>8)和0x00FF)+金额; 如果(b>255)b=255; 如果(b255)g=255; 如果(g

使用我试图计算颜色的较暗范围,但输出看起来不像正确的十六进制值(缺少一个值)

我做错了什么

函数颜色(col,amt){
var usePound=假;
if(列[0]==“#”){
col=col.slice(1);
usePound=true;
}
var num=parseInt(col,16);
var r=(数量>>16)+金额;
如果(r>255)r=255;
如果(r<0)r=0,则为else;
var b=((数值>>8)和0x00FF)+金额;
如果(b>255)b=255;
如果(b<0)b=0,则为else;
变量g=(数量和0x0000FF)+金额;
如果(g>255)g=255;
如果(g<0)g=0,则为else;
返回(usePound?”#“:”)+(g|(b更改此项:

(usePound?"#":"") + (g | (b << 8) | (r << 16)).toString(16);
b
g
获取其值的位置进行交换

如果不想交换这些,请将我的原始行更改为:

(usePound?"#":"") + ('00000'+(g | (b << 8) | (r << 16)).toString(16)).slice(-6);

(usePound?#?:)+('00000'+(g)(b你可能必须用一个前导的
0
填充。我不认为这个问题质量不好,很清楚他们在问什么,也很清楚他们的问题是什么。他们需要填充输出。我认为Mona试图找到一个更暗的颜色范围。交换
g
b
,将
firstColor
设置为绿色,而不是dar。)ker blue,.不交换似乎给出了Mona想要的东西,.它是RGB,文章中的代码是RBG。在这个问题被问到之前一个小时,我就知道了。这就是为什么我在代码中切换了
g
b
。你必须在函数中的任何地方切换它,而不仅仅是在返回sta中tement.你好,Intervalia和Anthony,谢谢你们两位在这方面的帮助。@Intevalia,关于你们所做的事情,我认为Anthony是对的,因为我在深蓝色上变绿了!在使用你们的解决方案时,当我编写我的代码版本时,我已经修复了
b
g
的读数。所以我需要另外,请修改输出行。我已经更新了答案,以符合您所说的内容。谢谢您指出这一点。
(usePound?"#":"") + ('00000'+(b | (g << 8) | (r << 16)).toString(16)).slice(-6);
var g = ((num >> 8) & 0x00FF) + amt;

var b = (num & 0x0000FF) + amt;
(usePound?"#":"") + ('00000'+(g | (b << 8) | (r << 16)).toString(16)).slice(-6);