ちょっとした文字列処理でいろいろな解法があると思うのですが、eval 使うと一番簡単に作れると思います。rgb と言う関数を用意しておいて、eval( "rgb(0,0,0)" ) で rgb 関数の戻り値が eval メソッドの戻り値として返って来ます。もし、rgb という関数名にはちょっと違和感感じるのであれば、"rgb(0,0,0)".replace("rgb","関数名") で関数名は好きにできます。
ですが、無条件に eval 使うのはあまり良く無いので、引数部分だけ取り出して eval してみました。引数部分ならば、処理は必ず自分の関数内で行われるので、問題を排除するのは容易だと思います。
ただ、ここまでするのであれば、eval を使う意味もあまり無いのも事実ですが、処理分割がとてもはっきりされた上に、やっている事の内容が解りやすいコードになったと思います。
1) 正規表現で、rgb( n,n,n ) の引数部分である "n,n,n" を取得
2) 新たに関数部分を付加して eval で実行
3) 処理関数( a, b, c ) で個別の処理を記述する
3) は、いきなり eval で使える関数です
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
function __myrgb1(a){
var str = "__myrgb2("+a+")";
return eval(str);
}
function __myrgb2(a,b,c){
return "#"+(
((a<16)?"0":"")+
a.toString(16)+
((b<16)?"0":"")+
b.toString(16)+
((c<16)?"0":"")+
c.toString(16)
).toUpperCase();
}
$(function(){
$("td").click(function(){
a = $(this).css("background-color");
a.match(/rgb\((.+?)\)/);
alert( __myrgb1(RegExp.$1) );
});
});
</script>
white |
black |
whitesmoke |
yellowgreen |
aliceblue |
antiquewhite |
aqua |
aquamarine |
azure |
beige |
bisque |
yellow |
blanchedalmond |
blue |
blueviolet |
brown |
burlywood |
cadetblue |
chartreuse |
chocolate |
coral |
cornflower |
cornsilk |
crimson |
cyan |
darkblue |
darkcyan |
darkgoldenrod |
darkgray |
darkgreen |
darkkhaki |
darkmagenta |
darkolivegreen |
darkorange |
darkorchid |
darkred |
darksalmon |
darkseagreen |
darkslateblue |
darkslategray |
darkturquoise |
darkviolet |
deeppink |
deepskyblue |
dimgray |
dodgerblue |
firebrick |
floralwhite |
forestgreen |
fuchia |
gainsboro |
ghostwhite |
gold |
goldenrod |
gray |
green |
greenyellow |
honeydew |
hotpink |
indianred |
indigo |
ivory |
khaki |
lavender |
lavenderblush |
lawngreen |
lemonchiffon |
lightblue |
lightcoral |
lightcyan |
lightgoldenrodyellow |
lightgreen |
lightgrey |
lightpink |
lightsalmon |
lightseagreen |
lightskyblue |
lightslategray |
lightsteelblue |
lightyellow |
lime |
limegreen |
linen |
magenta |
maroon |
mediumaquamarine |
mediumblue |
mediumorchid |
mediumpurple |
mediumseagreen |
mediumslateblue |
mediumspringgreen |
mediumturquoise |
mediumvioletred |
midnightblue |
mintcream |
mistyrose |
moccasin |
navajowhite |
navy |
oldlace |
olive |
olivedrab |
orange |
orangered |
orchid |
palegoldenrod |
palegreen |
paleturquoise |
palevioletred |
papayawhip |
peachpuff |
peru |
pink |
plum |
powderblue |
purple |
red |
rosybrown |
royalblue |
saddlebrown |
salmon |
sandybrown |
seagreen |
seashell |
sienna |
silver |
skyblue |
slateblue |
slategray |
snow |
springgreen |
steelblue |
tan |
teal |
thistle |
tomato |
turquoise |
violet |
wheat |