无法获取未定义或空引用的属性“1”

时间:2013-08-27 15:32:53

标签: javascript internet-explorer-8

我的网站上有一个日历,会打开一个弹出框,显示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:无法获取未定义或空引用的属性“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);
}
});

1 个答案:

答案 0 :(得分:2)

错误表示正在使用与正则表达式不匹配的参数调用rgb2hex函数。匹配失败将导致变量rgb为空,并且该代码不会检查该可能性。

因此真正的问题可能在于调用函数的代码。