2

Web ページ内のすべてのテーブルを削除するにはどうすればよいですか? テーブルには ID が関連付けられていません。

4

4 に答える 4

12

非常に単純なバージョン:

var tables = document.getElementsByTagName("TABLE");
for (var i=tables.length-1; i>=0;i-=1)
   if (tables[i]) tables[i].parentNode.removeChild(tables[i]);
于 2008-11-15T03:35:08.313 に答える
5

危険!getElementsByTagName は「ライブ」の NodeList を返します。Joel のコードでは、要素 0 を削除するとリスト内の項目が下に移動するため、要素 1 を削除すると、要素 1 が失われます。

考えられる代替方法: 常にすべての要素を削除することがわかっている場合は、while ループを使用できます。

var tables= document.getElementsByTagName('table');
while (tables.length>0)
    tables[0].parentNode.removeChild(tables[0]);

または、削除するかどうかはわかりませんが、繰り返しの順序は重要ではない場合は、リストを逆方向に調べます。

var tables= document.getElementsByTagName('table');
for (var i= tables.length; i-->0;)
    tables[i].parentNode.removeChild(tables[i]);

削除するかしないかで前方に反復する必要がある場合は、リストをコピーする必要があるという面倒な立場にあります。

function toArray(l) {
    var a= [];
    for (var i= 0; i<l.length; i++)
        a[i]= l[i];
    return a;
}

var tables= toArray(document.getElementsByTagName('table'));
for (var i= 0; i<tables.length; i++)
    ...
于 2008-11-15T12:10:48.537 に答える
3

jQuery を使用している場合は、非常に簡単です...

$(document).ready(function() {
  $("table").remove();
});

他のライブラリでどのように行っているかわかりません。

js ライブラリを使用していない場合は、使用する必要があります。

于 2008-11-15T03:29:24.597 に答える
1

または:

function myF() {
    this.checkChild = function(tagN, node) {
        if (node.tagName.toLower() == tagN.toLower()) {
            node.parentNode.removeChild(node);
        }
        else {
            var i;
            for(i = 0; i < node.childNodes.length; i++)
                this.checkChild(tagN, node.childNodes[i]);
        }
    }
}

使用法:


var m = new myF();
m.checkChild("The name of the tagname. This case: table", document.body); 
 

幸運を!

于 2008-11-16T04:00:50.197 に答える