使用javascript获取存在某个CSS属性的所有元素?

时间:2012-08-31 21:39:34

标签: javascript html css dom browser

有没有办法让DOM上的所有元素都存在某个CSS属性?假设我想要使用背景图像CSS值获取所有元素 - 我如何选择所有元素?我最好避免使用Jquery。

3 个答案:

答案 0 :(得分: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用于其余部分。

答案 1 :(得分: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]);
    } 
}

答案 2 :(得分:-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!');
    } 
}

最好使用确切的标签名称而不是'*',如果你知道它之前会是什么