ちょっとした文字列処理でいろいろな解法があると思うのですが、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 |