这是我的代码:
// user control
<asp:CheckBox ID="chbGenerali" runat="server" />
// js
var prova = $find("chbGenerali");
console.log(prova.checked);
但我得到TypeError: prova is null
。它应该是一种:
document.getElementById("<%=chbGenerali.ClientID%>")
不是吗?
我是否需要启用某些功能
答案 0 :(得分:4)
默认情况下,ID的设置编译时间并不总是等于运行时的ID。
在使用框架4.0时,可以使用控件上的ClientIDMode
属性。
ClientIDMode="Static"
阅读this博客文章,了解有关ClientIDMode属性的更多信息。
答案 1 :(得分:4)
基本上,由于控制树处理,客户端ID与服务器端不同。 ASP.Net生成客户端,它是控件ID的层次结构的组合。这将确保ID的唯一性。
例如,如果您的控件位于“pnlABC
”面板中,并且您的复选框名为“chkGenerali
”,则输出clientID将为“pnkABC_chkGenerali
”。将此逻辑扩展到整个控制树以获取实际ID。
解决问题的最简单方法是通过以下方式替换您的代码:
var prova = $find("<%= chbGenerali.ClientID%>");
将在渲染时生成实际的客户端ID。