0

正直なところ、これ以上のタイトルは思いつきません。自分で 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) {hexrgb3 >= x <= 6

4

1 に答える 1

1

エラーが発生したときに関数から ing してifいないため、次のステートメントに移動します。return

if (hex.length < 3) {
  $(".result").text("Error");
  return;
}

別の方法は、その検証に合格elseするコードの残りの部分にを使用することです。

if (hex.length < 3) {
  $(".result").text("Error");
} else {
  if (hex[0] == "#") {
    // ...
}

あなたの他の質問に関してはif (hex.length >= 3 && hex.length <= 6) {}、あなたが言ったように、あなたはそれを検証したいので、私は使用します3 >= x <= 6

于 2012-09-01T01:52:35.863 に答える