使用javascript获取具有特定CSS属性的所有元素?

使用javascript获取具有特定CSS属性的所有元素?,javascript,html,css,dom,browser,Javascript,Html,Css,Dom,Browser,有没有一种方法可以在存在某个CSS属性的情况下获取DOM上的所有元素?假设我想得到所有具有背景图像CSS值的元素-我如何选择所有元素?我最好避免使用Jquery var elms = document.all ? document.all : document.getElementsByTagName("*"); for (i = 0; i < elms.length; i++) { if (elms[i].style.backgroundImage.length > 0) {

有没有一种方法可以在存在某个CSS属性的情况下获取DOM上的所有元素?假设我想得到所有具有背景图像CSS值的元素-我如何选择所有元素?我最好避免使用Jquery

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!');
    } 
}
如果您事先知道它是什么,那么最好使用确切的标记名,而不是“*”


最好使用准确的标记名,而不是“*”,如果您知道它将是什么,请绝对确定,您得到的样式如下:

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适用于其余部分。

可以肯定的是,您得到的样式如下:

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适用于其他浏览器。

在现代浏览器上,您可以使用


在现代浏览器上,您可以使用


我不再百分之百确定了,但是style属性不是只从style属性中查看内嵌样式吗?@DavidThomas那么如何获得非内联样式呢?谢谢你指出这一点。是的-我想如果你想查看CSS内部,你必须使用document.styleSheets手动完成-这可能会非常困难,我不再百分之百确定,但是style属性不是只查看style属性中的内联样式吗?@DavidThomas那么如何获得非内联样式呢?感谢您指出这一点。是的-我想如果您想查看CSS内部,您必须使用document.styleSheets手动完成-仅出于好奇,这可能会非常困难,这段代码会产生什么结果,如果为某个元素设置了runtimeStyle?这可能是一个很好的问题:-我以前从未听说过runtimeStyle,所以我无法回答这个问题,对不起,我不确定它是否仅是IE,但在IE中,您可以设置runtimeStyle为元素创建一种内联样式。但是,在检索innerHTML或outerHTML时,无法看到这种样式,尽管它会呈现到页面中。出于好奇,如果为某些元素设置了runtimeStyle,那么这段代码的结果会是什么?这可能是一个非常好的问题:-我以前从未听说过runtimeStyle,所以我无法回答这个问题,对不起,我不确定它是否只是IE,但在IE中,您可以设置runtimeStyle来为元素创建一种内联样式。但是,在检索innerHTML或outerHTML时,无法看到此样式,尽管它已呈现到页面中。