【发布时间】:2008-12-27 19:58:36
【问题描述】:
我一直在使用来自 Pro JavaScript Techniques 的 John Resig 的 getStyle 函数来获取元素的样式:
function getStyle(elem, name) {
// J/S Pro Techniques p136
if (elem.style[name]) {
return elem.style[name];
} else if (elem.currentStyle) {
return elem.currentStyle[name];
}
else if (document.defaultView && document.defaultView.getComputedStyle) {
name = name.replace(/([A-Z])/g, "-$1");
name = name.toLowerCase();
s = document.defaultView.getComputedStyle(elem, "");
return s && s.getPropertyValue(name);
} else {
return null;
}
}
但是,如果没有指定样式,此方法会返回元素的默认样式:
http://johnboxall.github.com/test/getStyle.html
alt text http://img.skitch.com/20081227-8qhxie51py21yxuq7scy32635a.png
是否可以只获取元素的样式表指定样式(如果样式未定义则返回 null)?
更新:
我为什么需要这样的野兽?我正在构建一个允许用户设置元素样式的小组件。可以应用的样式之一是text-align - left、center、right - 使用getStyle 未设置样式的元素默认为center。这使得无法判断元素是否居中是因为用户希望它居中,还是因为这是默认样式而居中。
【问题讨论】:
标签: javascript css stylesheet