0

我正在尝试从简单的 html 页面中删除 2 个表。该页面仅包含 2 个表格,这是页面代码:

<html>
<body>
<h3>Table 1</h3>

<table class="details" border="1" cellpadding="0" cellspacing="0">
<tbody><tr>
<th>1</th>
<td>2</td>
</tr>
</tbody></table>

<h3>Table 2</h3>

<table class="details" border="1">
<tbody><tr>
<th>1</th>
<td>2</td>
</tr><tr>
<th>3</th> 
<td>4</td>
</tr>
</tbody></table>

</body>
</html>

我可以使用以下方法删除其中一个表:

var elmDeleted = document.getElementsByClassName('details').item(0);
elmDeleted.parentNode.removeChild(elmDeleted);

或者

var elmDeleted = document.getElementsByClassName('details').item(1);
elmDeleted.parentNode.removeChild(elmDeleted);

但是我无法在我的用户脚本中连续使用这些命令删除两个表:

var elmDeleted = document.getElementsByClassName('details').item(0);
elmDeleted.parentNode.removeChild(elmDeleted);
var elmDeleted = document.getElementsByClassName('details').item(1);
elmDeleted.parentNode.removeChild(elmDeleted);

请指教

4

2 回答 2

1

塞巴斯蒂安的答案确实是您要寻找的答案,但为了清楚起见,我将展示您如何做到这一点:您可以

var elmDeleted = document.getElementsByClassName('details').item(0);
elmDeleted.parentNode.removeChild(elmDeleted);
var elmDeleted = document.getElementsByClassName('details').item(0);
elmDeleted.parentNode.removeChild(elmDeleted);

注意我.item[0]两次都删除的事实;它将两次删除页面上的第一个。否则,这个:

var elmDeleted = document.getElementsByClassName('details').item(1);
elmDeleted.parentNode.removeChild(elmDeleted);
var elmDeleted = document.getElementsByClassName('details').item(0);
elmDeleted.parentNode.removeChild(elmDeleted);

...这将删除第二个,然后是第一个。

要(我称之为)整洁:(==更紧凑)

for(i=0;i<2;i++)(temp=document.getElementsByClassName('details').item(0)).parentNode.removeChild(temp);

作为旁注,由于您说页面上只有 2 个表,您可以将每个表替换document.getElementsByClassName('details')document.getElementsByTagName('table').

此外,在我的紧凑版本中,您可以替换i<2i<document.getElementsByClassName('details').length删除所有“详细信息”表,而不仅仅是前两个。

希望这有帮助:)

于 2012-08-04T21:03:22.147 回答
1

删除旧表 #0 后,旧表 #1 将成为新表 #0。因此,如果您尝试获取表 #1,它将失败。

于 2012-08-04T16:05:08.810 回答