1

「display:none」スタイルのすべてのdiv要素を取得してから、これらの要素をすべて削除する必要があります。また、#somecontainer要素に含まれているdivだけを選択する必要があります。RAWJavaScriptでそれを行う必要があります。何か案が?

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>
4

3 に答える 3

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);
    }
}
于 2013-03-22T02:57:11.590 に答える
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]);
}
于 2013-03-22T03:13:37.703 に答える