2012-11-19 132 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