1

特定の CSS プロパティが存在する DOM 上のすべての要素を取得する方法はありますか? CSS 値が background-image であるすべての要素を取得したいとします。それらすべてを選択するにはどうすればよいでしょうか。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 に答える