2008-11-15 87 views

回答

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]); 
3

如果你使用jQuery這是很容易...

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

不知道如何是你在其他圖書館做。

如果你不使用js庫,你應該。

+0

這將在文檔加載時執行。如果你想稍後做,在事件處理程序中使用$('table')。remove()。 – tvanfosson 2008-11-15 03:32:06

+0

@tvanfosson:請您詳細說明一下嗎?另外我使用WordPress的博客?我怎樣才能加載jQuery庫? – ashokgelal 2008-11-15 03:40:39

5

危險! getElementsByTagName返回一個'活的'NodeList。在Joel的代碼中,刪除元素0會將列表中的項目向下移動,這樣當您刪除元素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++) 
    ... 
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); 

祝你好運!