JavaScript的match在IE中无法正常工作。

3
我有以下代码。
function rgb2hex(rgb) {
rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);
}

在Firefox和Chrome中似乎工作正常。IE会提示'1'为null或不是对象。rgb值似乎确实被传递到了rgb.match。

有什么想法吗?

谢谢


你传递给这个函数的值看起来像是 "rgb(12, 34, 56)" 吗? - James Kolpack
我正在传递一个RGB颜色并尝试将其转换为十六进制。 - jason
1个回答

3

在运行正则表达式之前,尝试打印rgb的值。可能是输入不同。

我假设您正在检查一个dom_element.style属性。也许IE从一开始就没有将该属性转换为rgb(r, g, b)格式。


我在匹配之前添加了一个alert(),它确实具有十六进制颜色值,所以看起来没问题。 - jason
是的,你说得对,它已经被转换了,而 FF 和 Chrome 没有。谢谢。 - jason

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接