当前位置:  开发笔记 > 编程语言 > 正文

在JavaScript中获取元素样式表样式

如何解决《在JavaScript中获取元素样式表样式》经验,为你挑选了1个好方法。

我一直在使用John Resig的getStylePro JavaScript技术来获得元素的风格:

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

替代文字http://img.skitch.com/20081227-8qhxie51py21yxuq7scy32635a.png

是否可以只获取元素的样式表指定样式(如果未定义样式,则返回null)?

更新:

为什么我需要这样的野兽?我正在构建一个允许用户设置元素样式的小组件.一个可应用的样式是text-align- ,,left -使用无样式元素默认.这使得无法判断元素是否居中,因为用户希望它居中或居中,因为这是默认样式.centerrightgetStylecenter



1> Shog9..:

是否可以只获取元素的样式表指定样式(如果未定义样式,则返回null)?

这实际上是你所呈现的例程所做的.问题是,在大多数情况下,大多数样式都没有未定义 - 它们是由各个浏览器的内部样式表继承和/或定义的.

您可以通过大量的努力,迭代定义相关样式的所有规则,在文档的当前视图中的所有样式表中,为相关元素评估它们,如果没有应用...如果没有应用于父级(或者不继承此特定样式)...则认为它未定义.这将是缓慢的,并且非常容易出错.我不建议尝试它.

也许你会更好地退后一步,问为什么你会需要这样的东西?

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有