2011-08-27 63 views
2

我没有使用jQuery。 我想删除所有表格标签(table,td,tr等)及其各自的结束标签,同时保留内容。我无法编辑创建此HTML的代码。它产生这样的:如何删除表格并将其替换为DIV?

<table> 
    <tbody> 
     <tr> 
      <td> 
       <div> 
       <a></a> 
       </div> 
      </td> 
     </tr> 
    </tbody> 
</table> 

我想删除所有的垃圾,因此刚结束这样的:

<div> 
    <a></a> 
</div> 

我搜索了一会儿,我无法找到像什么它。

+1

为什么你需要将其删除? –

+0

使用履带? – yoda

+0

我甚至不知道爬虫是什么。我试图解析一个web应用程序生成的HTML,以便我可以设计它并移动它。 – aerobit

回答

5

假设你正在使用的DOM(客户端),并具有对表的引用:

// table references the table DOM element 
var keep = document.createDocumentFragment(), 
    tds = table.getElementsByTagName('td'), 
    td, i, l; 

// extract the content of each cell 
for (i = 0, l = tds.length; i < l; i++) { 
    td = tds[i]; 
    while(td.firstChild) { 
     keep.appendChild(td.firstChild); 
    } 
} 

// insert the content before the table (or where ever you want) 
table.parentNode.insertBefore(keep, table); 
// remove the table 
table.parentNode.removeChild(table); 

DEMO

这遍历所有单元格,并附加每个子节点的DocumentFragment[MDN]。通过这样做,子表节点(我们想要保留的内容)将从表中删除。然后在表格和表格被删除之前插入它们。


如果你有HTML作为字符串,你可以通过创建一个虚设的元素生成DOM:

var dummy = document.createElement('div'); 
dummy.innerHTML = html; 

var table = dummy.getElementsByTagName('table')[0]; 
// or table = dummy.children[0]; 

如果这不是你想要的,你必须提供更多的信息。

+0

这似乎很好,但有没有办法在多个标签上做到这一点? – aerobit

+0

你是什么意思? –

+0

如同,不要只剥离TD标签,剥离表格和tr等等。 – aerobit

相关问题