SQLの窓

2015年08月01日


テーブルのセルをクリックして背景色を rgb(0,0,0) から #000000 の変換で、eval を使う事の考察

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


【JavaScriptの最新記事】
posted by lightbox at 2015-08-01 19:11 | JavaScript | このブログの読者になる | 更新情報をチェックする
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり