Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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 rgb到十六进制的转换_Javascript_Hex_Rgb - Fatal编程技术网

Javascript rgb到十六进制的转换

Javascript rgb到十六进制的转换,javascript,hex,rgb,Javascript,Hex,Rgb,我想说的是: 从元素中拾取RGB值 将其转换为十六进制 将其放入文本字段中 第一个解决方案: 摘自这条线 如果我将值传递给as numbers rgbtohex255255,则此操作有效,但如果我尝试将数字作为变量rgbToHexrgbValue提供,则不会执行任何操作。请参见演示中的第19到25行 感谢所有帮助:尝试以下方法: function componentToHex(c) { var hex = c.toString(16); return hex.length == 1 ?

我想说的是:

从元素中拾取RGB值 将其转换为十六进制 将其放入文本字段中 第一个解决方案:

摘自这条线

如果我将值传递给as numbers rgbtohex255255,则此操作有效,但如果我尝试将数字作为变量rgbToHexrgbValue提供,则不会执行任何操作。请参见演示中的第19到25行

感谢所有帮助:

尝试以下方法:

function componentToHex(c) {
  var hex = c.toString(16);
  return hex.length == 1 ? "0" + hex : hex;
}

function rgbToHex(r, g, b) {
  return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b);
}

//Slap the rel values into the fields
$('.color').click(function(e) {
  e.preventDefault();  

  var rgbVal = $(this).attr('rel');

  var rgbValSplit = rgbVal.split(",");

  for (var i = 0; i < 3; i++) {
    if (!rgbValSplit[i]) {
      rgbValSplit[i] = 0;
    }
  }

  var finalHex = rgbToHex(+rgbValSplit[0], +rgbValSplit[1], +rgbValSplit[2]);

  $('.color-picker-rgb').val(rgbVal);
  $('.color-picker-hex').val(finalHex);

  $('body').css('background', finalHex);
});

主要问题是您需要像预期的那样传递3个参数。另一个问题是它需要的是数字,而不是字符串。所以当你通过它191,c.toString 16将计算为c。如果你给它传递一个数字,比如191,它将计算为正确的值。

那么,你把一个参数传递给一个三参数函数,希望它能工作吗?谢谢:我只是继续删除这个愚蠢的问题。
function componentToHex(c) {
    var hex = c.toString(16);
    return hex.length == 1 ? "0" + hex : hex;
}

function rgbToHex(r, g, b) {
    return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b);
}
function componentToHex(c) {
  var hex = c.toString(16);
  return hex.length == 1 ? "0" + hex : hex;
}

function rgbToHex(r, g, b) {
  return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b);
}

//Slap the rel values into the fields
$('.color').click(function(e) {
  e.preventDefault();  

  var rgbVal = $(this).attr('rel');

  var rgbValSplit = rgbVal.split(",");

  for (var i = 0; i < 3; i++) {
    if (!rgbValSplit[i]) {
      rgbValSplit[i] = 0;
    }
  }

  var finalHex = rgbToHex(+rgbValSplit[0], +rgbValSplit[1], +rgbValSplit[2]);

  $('.color-picker-rgb').val(rgbVal);
  $('.color-picker-hex').val(finalHex);

  $('body').css('background', finalHex);
});