如何按样式属性值获取元素?

时间:2013-03-22 02:41:35

标签: javascript

我需要使用“display:none”样式获取所有div元素,然后删除所有这些元素。此外,我需要选择#somecontainer元素中包含的div。必须在RAW javascript中执行此操作。有什么想法吗?

示例html:

    <table id="listtabletemp">
    <thead>
        <tr id="theader">
            <td id="theaderleft">loolz</td>
        </tr>
    </thead>
    <tbody>
        <tr class="" rel="13117025">
            <td><div><style>
.ikthgjyhtr{display:none}
.tVOx{display:inline}
</style>
                <div style="display:none">crap here</div>
                <div></div>
                <div></div>
                <div style="display:none">crap here</div>
                <div class="230">something good</div>
                <div class="ikthgjyhtr">crap here</div>
                <div style="display:none">crap here</div>
                <div class="ikthgjyhtr">crap here</div>
                <div style="display: inline">something good</div>something good
                <div style="display: inline">something good</div>
                <div class="21">something good</div>
                <div style="display:none">crap here</div>
                <div style="display:none">crap here</div>
                <div style="display:none">crap here</div>
                <div class="4">something good</div>
                <div class="224">something good</div></div>
            </td>
        </tr>
    </tbody>
</table>

2 个答案:

答案 0 :(得分:3)

简单,DOM是你的朋友:

function removeDivs() {
    var container = document.getElementById("somecontainer");
    var divs = container.getElementsByTagName("div");
    var empty = [];
    var getStyle = function(obj, css){
        var style = null;
        if(obj.currentStyle) {
            style = obj.currentStyle[css];
        } else if(window.getComputedStyle) {
            style = window.getComputedStyle(obj, null).getPropertyValue(css);
        }
        return(style);
    };
    for(var i = 0, len = divs.length; i < len; i++) {
        var div = divs[i];
        if(div && ((div.style.display && div.style.display == "none") || getStyle(div, "display") == "none")) {
            empty.push(div);
        }
    }
    for(var i = 0, len = empty.length; i < len; i++) {
        var div = empty[i];
        div.parentNode.removeChild(div);
    }
}

答案 1 :(得分:0)

快速而肮脏,这是让你入门的东西:

http://jsfiddle.net/kttsJ/

var parent = document.getElementById('parent');
var items = parent.getElementsByTagName('DIV');
var hidden = [];
for (var i in items){
    if ((items[i]).getAttribute !== undefined){
        if ((items[i]).hasAttribute('style')){
            if ((/display\:\s*none/gi).test(items[i].getAttribute('style'))){
                hidden.push(items[i]);
            }
        }
    }
}

for (var i in hidden){
    hidden[i].parentNode.removeChild(hidden[i]);
}