0

これは私のコードです:

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

ではない?

何かを有効にする必要がありますか

4

2 に答える 2

4

基本的に、コントロール ツリーの処理のため、クライアント側の ID はサーバー側と同じではありません。ASP.Net は、コントロール ID の階層の組み合わせであるクライアント側を生成します。これにより、ID の一意性が保証されます。

たとえば、コントロールがパネル " pnlABC" にあり、チェックボックスの名前が " chkGenerali" の場合、出力 clientID は " pnkABC_chkGenerali" になります。このロジックをコントロール ツリー全体に拡張して、実際の ID を取得します。

問題を解決する最も簡単な方法は、コードを次のように置き換えることです。

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

これにより、レンダリング時に実際のクライアント側 ID が生成されます。

于 2013-05-29T13:07:01.260 に答える
4

ID の設定されたコンパイル時間は、デフォルトでは実行時の ID と常に一致するとは限りません。

フレームワーク 4.0 を使用してClientIDModeいるため、コントロールでプロパティを使用できます。

ClientIDMode="Static" 

ClientIDMode プロパティの詳細については、このブログ記事を参照してください。

于 2013-05-29T13:02:46.587 に答える