如何阅读元素的内嵌样式?(How to read inline styling of an elem

2019-09-27 17:37发布

我想知道,如果有可能,以确定哪些联样式已被归因于一个HTML元素。 我不需要检索值,但如果它被设置在线与否,而只是检测。

举例来说,如果HTML是:

<div id="foo" style="width: 100px; height: 100px; background: green;"></div>

我怎么能确定widthheightbackground已经明确宣布,内联?

据我所知,该解决方案可以通过两个方式。 我可以问,如果一个特定的属性设置,它会告诉我,真的还是假的,或者它可以告诉我,已设置的所有属性。 像这样:

var obj = document.getElementById('foo');
obj.hasInlineStyle('width');  //returns true;
obj.hasInlineStyle('border'); //returns false;

//or

obj.getInlineStyles();   //returns array with values:
                       // 'width' 'height' and 'background'

我不感兴趣是通过继承的声明在样式表中,只有内嵌样式的CSS属性。 最后一两件事,我有过的HTML源代码的控制。

谢谢

Answer 1:

更新了IE浏览器的工作

你可以尝试这样的事情

function hasInlineStyle(obj, style) {
    var attrs = obj.getAttribute('style');
    if(attrs === null) return false;
    if(typeof attrs == 'object') attrs = attrs.cssText;
    var styles = attrs.split(';');
    for(var x = 0; x < styles.length; x++) {
        var attr = styles[x].split(':')[0].replace(/^\s+|\s+$/g,"").toLowerCase();
        if(attr == style) {
            return true;
        }
    }
    return false;
}

所以,如果你有一个这样的元素:

<span id='foo' style='color: #000; line-height:20px;'></span>

这也有这样的样式表:

#foo { background-color: #fff; }

该函数将返回...

var foo = document.getElementById('foo');
alert(hasInlineStyle(foo,'color')); // true
alert(hasInlineStyle(foo,'background-color')); // false


Answer 2:

一个HTML元素的样式属性返回一个样式对象,其中列出的所有属性。 任何有(比null或空字符串等)的值被设定在内嵌样式属性。



Answer 3:

你可能想尝试做这样的事情:

var obj = document.getElementById("foo");
var obj_has_background = (obj.style.background != "");
var obj_has_width = (obj.style.width != "");
var obj_has_height = (obj.style.height != "");

似乎有点长,但这是最好的(最短)解决方案,我能想出。



Answer 4:

你们是不是要检查是否有一定的风格属性存在,或者只是想可能属性的列表? 如果你已经知道的属性,那么你可以只使用

hasStyle(obj,'width');
function hasStyle(obj, style)
{
     switch(style)
         case 'width':
              return obj.style.width ? true : false;
         case 'background':
              return obj.style.background ? true : false;
}

您可以使用保罗的函数生成的样式的数组。



文章来源: How to read inline styling of an element?