埋め込みjavascript関数を使用するとこのコードの要素のクライアントID:
document.getElementById('<%=buttonXXX.ClientID%>' )
しかし今、私はキャッシュとより高速なレンダリングのために外部JavaScriptファイルを使用しており、このコードはを取得するためにもう機能しません要素のクライアントID、エラーが発生します。
-を使用して外部javascriptファイルの要素のクライアントIDを取得するにはどうすればよいですか? asp.net 2.0、netframework 3.5、c#、iis 7.5
私は2つの方法を提案することができます。
コンパイル可能な。aspxファイル内で、javascriptを呼び出す前に変数を定義します。
var ButtonXXXID = <%=buttonXXX.ClientID%>
// and now include your javascript and use the variable ButtonXXXID
外部JavaScriptファイルで、コードを次のように記述します。
function oNameCls(ControlId1) {
this.ControlId1 = ControlId1;
this.DoYourWork1 = function() {
// use the control id.
// this.ControlId1
}
}
そして、あなたの行動を次のように呼びます。
<script>
// init - create
var <%=this.ClientID%>MyCls = new oNameCls('<%=Control1.ClientID%>');
// do your work
<%=this.ClientID%>MyCls.DoYourWork1();
</script>
この方法でアクションを呼び出すと、1つのコントロールからの1つのアクションが、同じページの他のコントロールからの同じアクションで上書きされるのを防ぐことができます。
クラスセレクターを使用できます。 jquery ここでの生活が大幅に簡素化される可能性があります。したがって、コントロールに特別なクラスを適用できます。
<asp:LinkButton ID="foo" CssClass="foo" runat="server" Text="foo" />
dOMの準備ができたら、外部javascriptファイルで、クラスセレクターを使用してボタンを参照できます。
$(function() {
var fooButton = $('.foo');
});
他に良い選択肢がない場合は、.js
ファイルで次のコードを使用します。
$("[id$='buttonXXX'])
スクリプトファイル内(test.js
)
function test(ControlID1) {
var controlId = document.getElementById(ControlID1);
controlId.onchange = function () {
alert(controlId.value);
}
}
.aspx
ファイル
<script type="text/javascript">
var callTest = test('<%=txtSelected.ClientID%>');
window.onload = callTest;
</script>