在写 JavaScript 时,有时候我们需要的颜色值必须是 #RRGGBB 形式(例如在进行色系转换时),但是我们无法保证颜色的输入值一定是 #RRGGBB 的形式,例如 Red,rgb(255, 0,0),#333 等也是合法的颜色值表示形式,另外还有一些不合法的颜色值输入,例如333333这种没有#开头的RGB形式,或者其他根本不是颜色值的字符串都有可能被输入,如何来把这些都统统地转化为 #RRGGBB 形式呢?这里提供一个 JavaScript 函数,可以很容易的进行这个转化。
代码如下
function parseColor(vValue) {
var oColorParser = document.createElement("body");
oColorParser.bgColor = vValue;
return oColorParser.bgColor;
}
当然不要指望这个函数能够把所有的值都转化为对的,只有 Red 和 333333 这种非 #RRGGBB 形式转化出来才是对的,对于其他的输入方式,不同的浏览器得出来的值是不一样的,例如:
document.writeln(parseColor('red'));
document.writeln(parseColor('rgb(255,0,0)'));
document.writeln(parseColor('#f00'));
document.writeln(parseColor('#ff0000'));
document.writeln(parseColor('ff0000'));
document.writeln(parseColor('f00'));
document.writeln(parseColor('fdafdadfadsfas'));
这个在 Internet Explorer 上的输出结果是:
#ff0000 #ff0000 #0f0000 #ff0000 #ff0000 #0f0000 #fdad0f
但是在 Firefox 上的输出结果却是:
#ff0000 #002500 #000000 #ff0000 #ff0000 #000000 #fddaad
而在 Opera 上的输出结果是:
#ff0000 #ff0000 #ff0000 #ff0000 #ff0000 #ff0000 #fdafda
