我正在尝试从简单的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);
请告知
答案 0 :(得分:1)
删除旧表#0后,旧表#1成为新表#0。因此,如果你试图获得表#1,它就会失败。
答案 1 :(得分: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<2
替换为i<document.getElementsByClassName('details').length
以删除所有'详细信息'表,而不仅仅是前两个。
希望这有助于:)