1

有没有办法通过某个 CSS 属性来获取 DOM 上的所有元素?假设我想获取所有具有 background-image CSS 值的元素——我如何选择所有这些元素?我最好避免使用 Jquery。

4

3 回答 3

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

于 2012-08-31T21:54:51.283 回答
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]);
    } 
}
于 2012-08-31T21:57:07.763 回答
-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!');
    } 
}

如果您事先知道它会是什么,最好使用确切的标签名称而不是“*”

于 2012-08-31T21:44:33.560 回答