Не забудьте, что разные броузеры по-разному возвращают код цвета. Одни в формате #RRGGBB, а другие в формате rgb(rrr,bbb,ccc). Потребуется функция приведения к единому формату. Вот (только у меня здесь удаляется символ решетки #):
function RGBColorStrToHEX(color)
// преобразовывает rgb(255,255,255) или rgb(100%,100%,100%) в FFFFFF.
// расширяет сокращенную шеснадцатиричную запись цвета в полную, например, #FAE в FFAAEE.
// возвращает шестнадцатиричное значение цвета БЕЗ ведущего символа # и в верхнем регистре
{
color = color.replace(/\s/g,"");
var aRGB = color.match(/^rgb\((\d{1,3}[%]?),(\d{1,3}[%]?),(\d{1,3}[%]?)\)$/i);
if(aRGB)
{
color = '';
for (var i=1; i<=3; i++) color += Math.round((aRGB[i][aRGB[i].length-1]=="%"?2.55:1)*parseInt(aRGB[i])).toString(16).replace(/^(.)$/,'0$1');
}
else
{
color = color.replace(/^#?([\da-f])([\da-f])([\da-f])$/i, '$1$1$2$2$3$3');
color = color.replace(/#/, '');
}
return color.toUpperCase();
}