2016-02-28 43 views
1

我有一個問題。我怎樣才能多次使用parentNode屬性?如何多次使用parentNode屬性?

我知道我可以做這樣的事情:

document.getElementById("mytag").parentNode.parentNode.remove(); 

或者是這樣的。我的問題不是我可以添加更多或更少的.parentNode來刪除我想要刪除的任何內容。

我的問題是,我想創建一個用戶友好的應用程序,其中用戶可以自我聲明應該刪除多少個父節點。

起初我試圖通過循環添加.parentNode。它不起作用。在第二次,我嘗試了eval()函數。同樣的結果。

有沒有人有一個很好的解決方案,我可以做到這一點?如果有機會你只需要說出父節點的數量就非常有用。

這裏有一個小例子。我將 「自動」 完成:

myFunction(..., ..., 3) { 
    ... 
    document.getElementById("mytag").parentNode.parentNode.parentNode.remove(); 
} 

或者

myFunction(..., ..., 2) { 
    ... 
    document.getElementById("mytag").parentNode.parentNode.remove(); 
} 

或者

myFunction(..., ..., 1) { 
    ... 
    document.getElementById("mytag").parentNode.remove(); 
} 

非常感謝你。

我優先考慮純JS的解決方案。另外一個jQuery解決方案也不錯。

+0

您標記了jQuery,但您沒有使用它,並沒有提及接受基於jQuery的解決方案 - 如果是這種情況,則不應使用該標記。 – Terry

+0

http://stackoverflow.com/questions/12980877/parents-without-jquery-or-queryselectorall-for-parents – jtrumbull

回答

2

這個功能應該做的工作:

function removeParent(element, num) { 
    var parent = element; 
    for (var i = 0; i < num; i++) { 
     if (parent.parentNode) { 
      parent = parent.parentNode; 
     } 
    } 
    parent.remove(); 
} 

您可以測試這個頁面上。例如,stackoverflow標誌。 HTML的結構是這樣的:

HTML 
    HEAD 
    BODY 
     DIV.container 
      DIV#header 
       DIV#hlogo 

打開控制檯,複製粘貼的功能,然後輸入removeParent(hlogo, 4)。整個頁面將消失:)