我有3个LinkButton
<asp:LinkButton ID="lnkEdit" runat="server" Text="Edit Record" OnClientClick='ControlVisible();'/>
<asp:LinkButton ID="lnkSave" runat="server" Text="Save" Visible="false" />
<asp:LinkButton ID="lnkCancel" runat="server" Text="Cancel" Visible="false" />
当我点击lnkEdit按钮时lnkSave和lnkCancel按钮必须不可见
<script language="javascript" type="text/javascript">
function ControlVisible() {
var Edit = document.getElementById("lnkEdit");
var Save = document.getElementById("lnkSave");
var Cancel = document.getElementById("lnkCancel");
Edit.visible = false;
Save.visible = true;
Cancel.visible = true;
}
</script>
但是当我要cLick编辑 LinkButton 时:var Edit = document.getElementById(“lnkEdit”); Null,无法检索Control的ID
问题是什么?
答案 0 :(得分:5)
你必须使用另一种选择:
var Edit = document.getElementById("<%= lnkEdit.ClientID %>");
var Save = document.getElementById("<%= lnkSave.ClientID %>");
var Cancel = document.getElementById("<%= lnkCancel.ClientID %>");
您还可以使用ASP.NET AJAX $ get方法,它是document.getElementById的快捷方式。
答案 1 :(得分:3)
在网页控件上设置Visible
false时,表示它永远不会到达浏览器。据浏览器所知,这些控件不存在。
首先使用CSS隐藏它们,而不是将Visible="false"
更改为style="display: none;"
- 效果将相同。
接下来,将代码更改为此代码,其他人也建议:
var oEdit = document.getElementById("<%=lnkEdit.ClientId%>");
var oSave = document.getElementById("<%=lnkSave.ClientId%>");
var oCancel = document.getElementById("<%=lnkCancel.ClientId%>");
oEdit.style.display = "";
oSave.style.display = "";
oCancel.style.display = "";
答案 2 :(得分:2)
ASP.NET将生成自己的HTML ID。如果要强制生成自己的自定义ID,可以使用“clientID”属性指定ID:
<asp:LinkButton ID="lnkEdit" clientID="lnkEdit" runat="server" Text="Edit Record" OnClientClick='ControlVisible();'/>
答案 3 :(得分:2)
在为元素生成ID时,ASP .NET会自动包含父元素的ID。生成的HTML将具有遵循以下格式的ID:ctl00$MainContent$txtSymbol
。因此,如果您只使用最后一个ID,则默认DOM函数getElementById
将找不到元素。
来源元素:
<asp:TextBox runat="server" ID="txtSymbol">
HTML生成:
<input type="text" id="ctl00_MainContent_txtSymbol" name="ctl00$MainContent$txtSymbol">
您可以创建一个帮助jQuery函数来处理这个问题。 Rick Strahl创建的下一个功能完成了这项工作:
function $$(id, context) {
var el = $("#" + id, context);
if (el.length < 1) {
el = $("[id$=_" + id + "]", context);
}
return el;
}
您可以像这样使用它来找到您的元素:
$$("txtSymbol")
答案 4 :(得分:1)
你确定这是他的路线:
var Edit = document.getElementById("lnkEdit");
而不是这个:
Edit.visible = false;
不确定哪个浏览器直接在HTML元素上接受可见属性,但请尝试使用它:
Edit.style.visibility = 'hidden';
或
Edit.style.display = 'none';
答案 5 :(得分:1)
如果控件位于容器内,则容器的id将被添加到conbtrol的if之前,以创建唯一的客户端ID。
您可以使用ClientID
属性查找生成的ID:
var Edit = document.getElementById("<%=lnkEdit.ClientId%>");
var Save = document.getElementById("<%=lnkSave.ClientId%>");
var Cancel = document.getElementById("<%=lnkCancel.ClientId%>");