2012-08-31 52 views

回答

3

要绝对肯定的是,你必须得到这样的风格:

var elms = document.all ? document.all : document.body.getElementsByTagName("*"); 
for (i = 0; i < elms.length; i++) { 
    if ((elms[i].currentStyle && elms[i].currentStyle.backgroundImage.length > 0) || 
    (window.getComputedStyle && 
    window.getComputedStyle(elms[i]).getPropertyValue("background-image"))) { 
     alert('found one!'); 
    } 
}​ 

CurrentStyle用于IE,getComputedStyle用于其余部分。

+0

务必向右滚动以获取|| :-) –

+1

只是为了好奇心,如果为某个元素设置了'runtimeStyle',那么这段代码的结果是什么? – Teemu

+0

这可能是一个非常好的问题:-)我以前从来没有听说过runtimeStyle,所以我不能回答这个问题,对不起 –

-1
var elms = document.all ? document.all : document.getElementsByTagName("*"); 
for (i = 0; i < elms.length; i++) { 
    if (elms[i].style.backgroundImage.length > 0) { 
     alert('found one!'); 
    } 
} 

这将是更好地使用准确的标签名而不是“*”,如果你知道这将是前手

+4

我不是百分百肯定更多,但不将'style'属性只看看行样式(从'风格'属性)? –

+0

@DavidThomas如何获得非内联样式呢?感谢您指出了这一点。 – zallarak

+0

正确 - 我想如果你想看看CSS里面的内容,你必须使用document.styleSheets手工完成它 - 这可能会很困难http://dev.opera.com/articles/view/dynamic-style -css-javascript/ – RobertMaysJr

2

在一个现代的浏览器可以使用getComputedStyles

var elements = document.getElementsByTagName("*"); 
var haveBg = new Array(); 
for (i = 0; i < elements.length; i++) { 
    var style = window.getComputedStyle(elements[i], null); 
    if (style.getPropertyValue("background-image") != 'none') { 
     haveBg.push(elements[i]); 
    } 
} 
相关问题