如何使用javascript删除dom元素?
我有一个链接,我想用javascript删除它 这是我到目前为止所拥有的如何使用javascript删除dom元素?,javascript,dom,Javascript,Dom,我有一个链接,我想用javascript删除它 这是我到目前为止所拥有的 <a href="">test</a> var a = document.getElementsByTagName('a'); for (var i = 0; i < a.length; ++i) { if (a[i].innerText === 'test') { a.remove(); } } var a=document.getElementsByT
<a href="">test</a>
var a = document.getElementsByTagName('a');
for (var i = 0; i < a.length; ++i) {
if (a[i].innerText === 'test') {
a.remove();
}
}
var a=document.getElementsByTagName('a');
对于(变量i=0;i
这将失败。不要这样做
document.getElementsByTagName('a')
返回实时收集,所以按相反顺序循环。所以试试看
var aColl = document.getElementsByTagName('a');
for (var i = aColl.length-1; i >= 0; i--) { //loop from reverese order, so that removed item doesn't affect
var thisNode = aColl[i];
if (thisNode.innerHTML === 'test') {
thisNode.parentNode.removeChild(thisNode );
}
}
如果对(var i=0,len=a.length;i
操作,那么最终只删除了其中的一半,因为每次删除都会更新a中的NodeCollection,最终会丢失较高索引的元素,检查将失败。不要这样做。document.getElementsByTagName('a'))
返回实时收集,因此按相反顺序循环。因此请重试
var aColl = document.getElementsByTagName('a');
for (var i = aColl.length-1; i >= 0; i--) { //loop from reverese order, so that removed item doesn't affect
var thisNode = aColl[i];
if (thisNode.innerHTML === 'test') {
thisNode.parentNode.removeChild(thisNode );
}
}
如果您为(var i=0,len=a.length;i{
然后您只删除了其中的一半,因为每次删除都会更新a中的NodeCollection,最终您将丢失较高索引处的元素,并且您的检查将失败。太好了,成功了。thanks@Patrioticcow看看为什么你不应该做相反的解释。太好了,成功了。thanks@Patrioticcow参见解释on为什么不应该反过来做呢?+1表示非jQuery——很高兴看到有人仍在学习原则+1表示非jQuery——很高兴看到有人仍在学习原则