2

我最近(在 SO.com 上)发现了一个漂亮的小函数,可以将 RGB 值转换为其十六进制对应值。作为参数,我传递了 CSS“颜色”属性的值(例如:“rgb(45,187,251)”)。这是功能:

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]);
}

它在 Chrome 中完美运行,但 Firefox 中的 Firebug 控制台出现以下错误:

rgb 为空

返回“#”+十六进制(rgb 1)+十六进制(rgb[2])+十六进制(rgb[3]);

为什么会这样?

您可以在goalcandy.com上看到它的使用情况。只需点击“立即开始”,然后点击屏幕左侧的“保存”并观看 Firebug 控制台。

4

2 回答 2

1

在调用中使用 Firebug 在该页面上进行跟踪

data += rgb2hex(jqMesh.css('border-color')) + '|'

在第 1516 行——调用jqMesh.css('border-color')返回一个空字符串。

在该断点处停止时调用jqMesh.css('color')Firebug 控制台会返回“rgb(68, 68, 68)”

于 2012-08-10T18:40:13.120 回答
1

结果证明不是rgb2hex()函数有问题,而是 Firefox 中 jquery 的css()方法有问题。也就是说,在 Firefox 中,调用.css("border-color")返回一个 void 值,而不是.css("border-top-color")例如。Chrome 也理解第一个版本。

于 2012-08-10T19:14:32.957 回答