javascript - 如何在 IE 9 中使用 JavaScript 从样式属性获取背景颜色作为十六进制值?

标签 javascript jquery css internet-explorer-9

<分区>

Possible Duplicate:
Get hex value rather than RGB value using jQuery

我有一个像这样的 <span>:

<span class="colour" style="background:#000000;"></span>

在大多数浏览器中,包括 IE 8,我可以像这样获取背景颜色的十六进制值:

$('span.colour').attr('style').match(/#[0123456789ABCDEF]{3,6}/gi);

但是,在 IE 9 中,$('span.colour').attr('style') 返回以下字符串:

background: rgb(0, 0, 0);

我必须在 JavaScript 中转换回十六进制,还是有办法让 IE 9 直接从元素中给我十六进制值(即实际上在该死的 HTML 中的东西)?

最佳答案

您可以使用以下内容对其进行转换 ( source )。

我相信大多数现代浏览器(包括 chrome)返回 rgb 而不是 hex。

也许您可以进行基本匹配以确定它是十六进制还是 rgb,然后根据需要转换 rgb。

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

更新版本(支持 alpha),由 Cody O'Dell 发现:

//Function to convert hex format to a rgb color
function rgb2hex(rgb){
 rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
 return (rgb && rgb.length === 4) ? "#" +
  ("0" + parseInt(rgb[1],10).toString(16)).slice(-2) +
  ("0" + parseInt(rgb[2],10).toString(16)).slice(-2) +
  ("0" + parseInt(rgb[3],10).toString(16)).slice(-2) : '';
}

关于javascript - 如何在 IE 9 中使用 JavaScript 从样式属性获取背景颜色作为十六进制值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13937522/

上一篇:jquery - 从下往上滑动div

下一篇:html - 简单的 HTML <div> 没有填充其内容的宽度

相关文章:

javascript - 如何在 NodeRED 中创建自定义注入(inject) Node ?

javascript - AngularJS 是否可以在经典的 JavaScript 函数中使用数据绑定(bind)?

javascript - 文件的 JavaScript 中的快速低冲突非加密哈希

javascript - 通过单击区域隐藏菜单

javascript - 通过脚本弹出widget

html - 具有负边距的 float 元素会导致文本换行错误?

html - 在 CSS 中为 Sharepoint 2010 内容编辑器添加第三层下拉菜单

javascript - 用于查找链接的正则表达式

jquery - 使用 jquery 突出显示图像映射区域

html - 如何使用 CSS 解决列间隙问题