无法获取属性'1'的未定义引用或null引用

Unable to get property '1' of undefined or null reference

本文关键字:引用 null 未定义 获取 属性      更新时间:2023-09-26

我的网站上有一个日历,它会打开一个显示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中控制台.log(bgColor)时,它显示为#rgb(238238238),所以我不明白为什么它不起作用。也许是我愚蠢,但我一辈子都看不见。

$('.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);
}
});

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

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