2011-05-19 65 views
3

這應該是一個簡單的問題,但我需要幫助來解決這個問題: 我需要從DOM樹 使用javascript刪除其類「goup」的元素(最終與原型,但沒有其他圖書館)。 我不僅想要隱藏該段落,而且還要從DOM樹中完全刪除它。使用javascript從DOM樹中刪除p元素

我的解決方案使用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
,如果你想從DOM,使用刪除 node

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); 
     } 
    } 
} 
+0

謝謝,那實際上是這樣做的! – AKnox 2011-05-19 09:50:04

1
  1. getElementsByClassName返回一個NodeList,而不是一個Node。你必須遍歷其與for循環不支持除了在最新的瀏覽器
  2. getElementsByClassName,你應該使用a library that abstracts the differences away
  3. removeChild刪除後,它被稱爲元素的指定子:parent.removeChild(child);,你不在你想要直接刪除的元素上調用它。
+0

getElementsByClassName()是DOM規範級別2和3中的官方方法嗎? – reporter 2011-05-19 09:34:51

+0

我不這麼認爲。但它確實出現在HTML 5草案中。 – Quentin 2011-05-19 09:49:22