准确获取指定元素 CSS 属性值

当处理 DOM 元素的 CSS 属性时,我们经常会遇到一个问题:明明页面上已经定义了 CSS 属性值,但在获取的时候却为空,这是因为任何样式表文件或内联 CSS 预设的样式信息并不能可靠地反映到 style 属性上,本文向你介绍准确获取指定元素 CSS 属性值的方法。

准确获取指定元素 CSS 属性值 – 示例

 
<script type="text/javascript">
 
// 说明:准确获取指定元素 CSS 属性值
// 作者:John Resig 《Pro JavaScript Techniques》
// 来源:http://bbs.blueidea.com/viewthread.php?tid=2745446
// 整理:CodeBit.cn ( http://www.CodeBit.cn )
 
function getStyle( elem, name )
{
	//如果该属性存在于style[]中,则它最近被设置过(且就是当前的)
	if (elem.style[name])
	{
		return elem.style[name];
	}
 
	//否则,尝试IE的方式
	else if (elem.currentStyle)
	{
		return elem.currentStyle[name];
	}
 
	//或者W3C的方法,如果存在的话
	else if (document.defaultView && document.defaultView.getComputedStyle)
	{
		//它使用传统的"text-Align"风格的规则书写方式,而不是"textAlign"
		name = name.replace(/([A-Z])/g,"-$1");
		name = name.toLowerCase();
 
		//获取style对象并取得属性的值(如果存在的话)
		var s = document.defaultView.getComputedStyle(elem,"");
		return s && s.getPropertyValue(name);
 
	//否则,就是在使用其它的浏览器
	}
	else
	{
		return null;
	}
}
 
</script>

本文摘录自 John Resig 的《Pro Javascript Techniques》
蓝色 mozart0 版主发布了中文翻译:
http://bbs.blueidea.com/viewthread.php?tid=2733371