6

这应该是一个简单的问题,但我需要帮助来解决问题:我需要使用 javascript 从 DOM 树中删除带有“goup”类的元素(最终使用原型,但没有其他库)。我不仅想隐藏那段,而是将它从 DOM 树中完全删除。

我使用 getElementsByClassName 的解决方案不起作用。

function hidegoup() {
    var goup= document.getElementsByTagName("p")
        .getElementsByClassName("goup"); 
     goup.style.display = 'none';   
     goup.removeChild();
}

的HTML:

<div id="poems">
    <div class="poem" id="d1">
        <p class="goup">
        <a href="#">To the top of the page</a>
        </p>
    </div>
</div>
4

2 回答 2

8

如果node要从 DOM 中删除 a,请使用:

node.parentNode.removeChild(node);

至于你想做什么:

function hidegoup() {
    var p_list = document.getElementsByTagName("p");
    for(var i=p_list.length-1; i>=0; i--){
        var p = p_list[i];
        if(p.className === "goup"){
            p.parentNode.removeChild(p);
        }
    }
}
于 2011-05-19T09:26:44.793 回答
1
  1. getElementsByClassName返回 NodeList,而不是 Node。您必须使用循环对其进行for迭代
  2. getElementsByClassName不支持,除非在最近的浏览器中,您可能应该使用一个将差异抽象出来的库
  3. removeChild删除调用它的元素的指定子元素:parent.removeChild(child);,您不要在要直接删除的元素上调用它。
于 2011-05-19T09:31:31.680 回答