2012-11-19 173 views
0

我有一個div並在此div內,ContentPlaceHolder,並在持有人Linkbutton刪除LinkBut​​ton

我試圖動態刪除鏈接按鈕,但我收到此錯誤:

Error: DOM Exception: NOT_FOUND_ERR (8).

這裏是我的代碼:

<div id="leftcol" style="z-index: 0"> 
    <asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server"> 
    <asp:LinkButton CssClass="childLI" ID="tblRSManswers" runat="server" Text="RS Manswers" OnClick="ChildLink_Click" > 

Javascript代碼:

var child = document.getElementById("tblRSManswers")); 
alert(child); 
var parent = document.getElementById("ContentPlaceHolder2")); 
alert(parent); 
parent.removeChild(child); 

PS :警報不是NULL。

+1

你確定你沒有得到意外的'令牌)'? (你的getElementById都有一個額外的')')。 –

+0

當你在瀏覽器中顯示你的頁面時,檢查你的linkbutton並看到與它相關的id,然後做你想做的事情。 –

+0

你應該發佈你的渲染標記。另外,我看不到任何結束標籤。 – Amberlamps

回答

3

removeChild需要直接父級。你粘貼的HTML似乎只是最相關的代碼的摘錄,所以即使它看起來像你的代碼,我不確定這是真實的應用程序中的情況嗎?

嘗試

child.parentNode.removeChild(child); 
+0

它仍然不能正常工作 – user1292656

+0

然後'child'不是您想要刪除的節點的有效引用。根據Muarli的回答,你可能會指定一個不正確的ID。 –

1

試試這個代碼

document.getElementById("<%= tblRSManswers.ClientID %>").parentNode.removeChild(document.getElementById("<%= tblRSManswers.ClientID %>")); 

更新:

在ASP.Net ContentPlaceHolders只是呈現一些HTML元素的佔位符,但它不是一個實際的DOM元素。它不會在頁面中顯示。所以查找JavaScript內容佔位符總是返回null,因爲它不會呈現在DOM中

+0

OP表示警報很好,但我們可以假定靜態ID。 –

+0

服務器控件的ClientID對頁面而言是唯一的。所以你可以這樣做:var el = document.getElementById(「<%= tblRSManswers.ClientID%>」); el.parentElement.removeChild(EL); – YardenST