如何使用javascript删除dom元素?

如何使用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

我有一个链接,我想用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.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——很高兴看到有人仍在学习原则