当前位置: > > > js - 颜色比较(将颜色统一转成十六进制格式)

js - 颜色比较(将颜色统一转成十六进制格式)

使用 js 或 jQuery 获取背景色输出,会发现在ie下是#FF0000这样的十六进制格式。而在火狐或其他浏览器下,却是rgb(255,0,0)这样的rgb颜色。如果想要判断某个div的背景色是否是红色,虽然可以在js代码里先获取浏览器类型,再分别判断。但这样略显麻烦。 

可以定义一个函数,不管是哪种格式的颜色一律转换成十六进制的格式:
//将rgb()格式颜色转换成大写十六机制字符串(#C0C0C0),如果已经是十六进制则直接输出
function RGBtoHEX(str)
{
    if (str.substring(0, 3) == 'rgb') {
        var arr = str.split(",");
        var r = arr[0].replace('rgb(','').trim(), g = arr[1].trim(), b = arr[2].replace(')','').trim();
        var hex = [
            toHex(r),
            toHex(g),
            toHex(b)
        ];
        return "#" + hex.join('');               
    }
    else{
        return str;
    }
}

//将十进制数字转换成两位十六进制字符串
function toHex(N) {
    if (N==null) return "00";
    N=parseInt(N); if (N==0 || isNaN(N)) return "00";
    N=Math.max(0,N); N=Math.min(N,255); N=Math.round(N);
    return "0123456789ABCDEF".charAt((N-N%16)/16) + "0123456789ABCDEF".charAt(N%16);
}

使用用样例(以jQuery为例):
alert(RGBtoHEX($("#hangge:first").css("backgroundColor")) == "#FF0000")
评论0