1

私のサイトには、RGB カラー セレクターを表示するポップアップ ボックスを開くカレンダーがあります。IE8 以外のすべてのブラウザで正常に動作します。私のコードは以下です。

function rgb2hex(rgb) {
    rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
    function hex(x) {
        return ("0" + parseInt(x).toString(16)).slice(-2);
    }
    return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);
}

これがエラーです

SCRIPT5007: 未定義または null 参照のプロパティ '1' を取得できません

この行を指すのはどれですか

return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);

このコードは、職場で数週間休暇を取った他の誰かによって完成されたものであるため、よく知りません。誰かが私を正しい方向に向けるのを手伝ってくれるなら、それは大歓迎です。

編集

ここで関数が呼び出されます。IE8 で console.log(bgColor) を実行すると #rgb(238, 238, 238) と表示されるため、なぜ機能しないのかわかりません。私が愚かなのかもしれませんが、私の人生ではそれを見ることができません。

$('.period_day').click(function(e) {
    var bgColor = $(this).css('background-color');

if (rgb2hex(bgColor) == "#eeeeee") {
    $('.colour_picker').css('background-color', '#ff0000');
    $('#cal_colour_val').val('#ff0000');
} else {
    $('.colour_picker').css('background-color', bgColor);
    $('#cal_colour_val').val(bgColor);
}
});
4

1 に答える 1

2

このエラーは、rgb2hex関数が正規表現と一致しない引数で呼び出されていることを意味します。一致が失敗すると、変数rgbが null になり、そのコードはその可能性をチェックしません。

したがって、実際の問題はおそらく関数を呼び出しているコードにあります。

于 2013-08-27T15:35:15.037 に答える