正直なところ、これ以上のタイトルは思いつきません。自分で JavaScript を書くのは初めてです。
基本的に、hex
値を値に変換する次のスクリプトがありrgb
ます。
$(".submit").click(function() {
function hex2rgb(hex) {
if (hex.length < 3) {
$(".result").text("Error");
}
if (hex[0] == "#") {
hex = hex.substr(1);
}
if (hex.length == 3) {
var temp = hex;
hex = '';
temp = /^([a-f0-9])([a-f0-9])([a-f0-9])$/i.exec(temp).slice(1);
for (var i = 0; i < 3; i++) hex += temp[i] + temp[i];
}
var triplets = /^([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/i.exec(hex).slice(1);
return {
red: parseInt(triplets[0], 16),
green: parseInt(triplets[1], 16),
blue: parseInt(triplets[2], 16)
}
}
var hex = $(".hex").val();
var rgb = hex2rgb("#" + hex);
$(".result").text("rgba(" + rgb.red + "," + rgb.green + "," + rgb.blue + ",1)");
});
作業例: http://jsfiddle.net/charlescarver/JkeKV/5/
テキストボックスに入力された桁数が 3 桁未満 (不完全なhex
コード) の場合、テキスト.result
をエラーに変更します。コード自体は正常に動作しますが、コンソールに次のようなエラーが表示されます...
TypeError: 'null' はオブジェクトではありません ('/^([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2}) を評価しています) $/i.exec(hex).slice')
コードが3桁未満の場合、エラーを表示するだけで、if (hex.length == 3) {}
機能に移ろうとはしないと思いました。これは正しいですか?
また、 を に変換する関数にはif (hex.length == 3) {}
またはを使用する方がよいでしょうか? 桁数が?である必要があるため、これを考えているだけです。if (hex.length >= 3) {
hex
rgb
3 >= x <= 6