我想知道,如果有可能,以确定哪些联样式已被归因于一个HTML元素。 我不需要检索值,但如果它被设置在线与否,而只是检测。
举例来说,如果HTML是:
<div id="foo" style="width: 100px; height: 100px; background: green;"></div>
我怎么能确定width
, height
和background
已经明确宣布,内联?
据我所知,该解决方案可以通过两个方式。 我可以问,如果一个特定的属性设置,它会告诉我,真的还是假的,或者它可以告诉我,已设置的所有属性。 像这样:
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源代码的控制。
谢谢
更新了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
一个HTML元素的样式属性返回一个样式对象,其中列出的所有属性。 任何有(比null或空字符串等)的值被设定在内嵌样式属性。
你可能想尝试做这样的事情:
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 != "");
似乎有点长,但这是最好的(最短)解决方案,我能想出。
你们是不是要检查是否有一定的风格属性存在,或者只是想可能属性的列表? 如果你已经知道的属性,那么你可以只使用
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;
}
您可以使用保罗的函数生成的样式的数组。