为什么$find不起作用?

本文关键字:不起作用 find 为什么 | 更新日期: 2023-09-27 18:15:48

这是我的代码:

// 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%>")

不是吗?

我需要启用一些东西吗

为什么$find不起作用?

默认情况下,ID的编译时间设置并不总是等于运行时的ID。

当你使用框架4.0时,你可以在控件上使用ClientIDMode属性。

ClientIDMode="Static" 

关于ClientIDMode属性的更多信息,请阅读本文。

基本上,由于控制树处理,客户端ID与服务器端不相同。ASP。Net生成客户端,它们是控件Id的层次结构的组合。这将确保id的唯一性。

例如,如果您的控件在面板"pnlABC"中,并且您的复选框命名为"chkGenerali",则输出的clientID将为"pnkABC_chkGenerali"。将此逻辑扩展到整个控制树以获得实际的ID。

解决这个问题最简单的方法是将代码替换为:

var prova = $find("<%= chbGenerali.ClientID%>");

,它将在渲染时生成实际的客户端ID