私は最近 (SO.com で) RGB 値を 16 進数に変換する気の利いた小さな関数を見つけました。引数として、CSS の「色」属性の値を渡します (例: 「rgb(45,187,251)」)。関数は次のとおりです。
function rgb2hex(rgb) {
rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
function hex(x) {
return ("0" + parseInt(x).toString(16)).slice(-2);
}
return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);
}
Chrome では問題なく動作しますが、Firefox の Firebug コンソールでは次のエラーが表示されます。
RGBはヌルです
return "#" + hex(rgb 1 ) + hex(rgb[2]) + hex(rgb[3]);
なぜこれが起こるのですか?
goalcandy.comで実際に使用されているのを見ることができます。「今すぐ開始」をクリックし、画面の左側にある「保存」をクリックして、Firebug コンソールを確認します。