1

我有一个像这样的变量,

var colours = [
    { name: 'Yellow', hex: '#FFFF00' },
    { name: 'LawnGreen', hex: '#7CFC00' },
    { name: 'Aqua', hex: '#00FFFF' },
    { name: 'Fuchsia', hex: '#FF00FF' },
    { name: 'Blue', hex: '#0000FF' },
    { name: 'Red', hex: '#FF0000' }      
];

我有这样的功能,

$(function()
{
    $('li').live('click', function()
    {
         $('.activeColour').css('background-color', $(this).css('background-color'));       
    });

    var $palette = $('ul');
    for (var i = 0; i < colours.length; i++)
    {
        $palette.append($('<li />').css('background-color', colours[i].hex));
    }
});

但是在单击特定颜色时,我不需要 rgb 颜色,我需要变量中的十六进制颜色或警告会做什么,这是用于 document.exec 命令的,请帮助。

4

2 回答 2

1
    red = parseInt(your_red_value).toString(16);
    green = parseInt(your_green_value).toString(16);
    blue = parseInt(your_blue_value).toString(16);
    if(red == 0)
        red = '00';
    if(green == 0)
        green = '00';
    if(blue == 0)
        blue = '00';
    var Hex_value = ('#' + red + green + blue).toUpperCase();

RGB 到十六进制转换器

编辑:这就是你想要的

var color = $(this).css('background-color').substring($(this).css('background-color').indexOf('(')+1,$(this).css('background-color').indexOf(')')).split(',');
var hex_color ='#'+ parseInt(color[0]).toString(16) + parseInt(color[1]).toString(16) + parseInt(color[2]).toString(16) ;

JS小提琴

于 2013-05-20T09:32:09.500 回答
0

尝试以下功能,它将RGB转换为十六进制颜色

 function colorToHex(color) {
        if (color.substr(0, 1) === '#') {
            return color;
        }
        var digits = /(.*?)rgb\((\d+), (\d+), (\d+)\)/.exec(color);

        var red = parseInt(digits[2]);
        var green = parseInt(digits[3]);
        var blue = parseInt(digits[4]);

        var rgb = blue | (green << 8) | (red << 16);
        return digits[1] + '#' + rgb.toString(16);
    };




   function rgbToHex(r, g, b) {
                var rgb = b | (g << 8) | (r << 16);
               return (0x1000000 | rgb).toString(16).substring(1);
            }

谢谢,

湿婆

于 2013-05-20T09:46:27.037 回答