2012-05-28 46 views
2

刪除DOM節點我有以下的ASP(js版)代碼:錯誤當試圖從DOM文檔

var doc = Server.CreateObject("HTMLFILE"); 
var doc.write(content); 
// the value of content has been set elsewhere and is not of concern 
var elements = doc.getElementsByTagName("br"); 

到目前爲止,一切都很好。這裏是我遇到麻煩的地方:

if ((elements) && (elements.length > 0)) 
doc.removeChild(elements[0]); 

這最後一段代碼導致我的網站顯示「無法顯示頁面」消息。我不明白幕後有什麼事嗎?爲什麼我不能刪除一個子節點?附加一個節點可以正常工作,就像修改現有節點的屬性一樣,但我無法刪除節點。

+0

它是一種在服務器端代碼中使用HTML DOM的有趣方法。然而,它會擔心我正在使用一個組件,期望在我的ASP服務器的客戶端應用程序中使用。 – AnthonyWJones

回答

2

removeChild()應在節點的父被稱爲被刪除這樣的:

if (elements && elements.length > 0) 
    elements[0].parentNode.removeChild(elements[0]); 

或者有時是有幫助的輔助功能:

function removeNode(node) { 
    node.parentNode.removeChild(node); 
} 

而且,那麼你可以這樣做:

if (elements && elements.length > 0) 
    removeNode(elements[0]); 
+0

+1一個完全偏離主題的提示是,條件中的元素&&部分是不必要的,因爲集合總是會被返回。 – 2012-05-28 18:41:25

+0

謝謝,這似乎是伎倆。我從w3schools獲得我的例子,他們並不總是提供直接的信息。 – user1060817

+0

我已經阻止了我的谷歌搜索w3schools,因爲他們有這樣糟糕和不完整的信息。使用其他來源。 MDN是更好的來源之一。我在MDN關鍵詞前面加上了大部分搜索結果,如['「mdn removechild」'](https://www.google.com/search?sugexp=chrome,mod=15&sourceid=chrome&ie=UTF-8&q=mdn+removechild )先看看他們說什麼。 – jfriend00