web-dev-qa-db-ja.com

外部javascriptファイルでasp.netクライアントIDを取得する方法

埋め込みjavascript関数を使用するとこのコードの要素のクライアントID

document.getElementById('<%=buttonXXX.ClientID%>' )

しかし今、私はキャッシュとより高速なレンダリングのために外部JavaScriptファイルを使用しており、このコードはを取得するためにもう機能しません要素のクライアントID、エラーが発生します。

-を使用して外部javascriptファイルの要素のクライアントIDを取得するにはどうすればよいですか? asp.net 2.0、netframework 3.5、c#、iis 7.5

14
MonsterMMORPG

私は2つの方法を提案することができます。

最初の方法

コンパイル可能な。aspxファイル内で、javascriptを呼び出す前に変数を定義します。

var ButtonXXXID = <%=buttonXXX.ClientID%>
// and now include your javascript and use the variable ButtonXXXID

2番目の方法

外部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つのアクションが、同じページの他のコントロールからの同じアクションで上書きされるのを防ぐことができます。

30
Aristos

クラスセレクターを使用できます。 jquery ここでの生活が大幅に簡素化される可能性があります。したがって、コントロールに特別なクラスを適用できます。

<asp:LinkButton ID="foo" CssClass="foo" runat="server" Text="foo" />

dOMの準備ができたら、外部javascriptファイルで、クラスセレクターを使用してボタンを参照できます。

$(function() {
    var fooButton = $('.foo');
});
4
Darin Dimitrov

他に良い選択肢がない場合は、.jsファイルで次のコードを使用します。

$("[id$='buttonXXX'])
1
s k

スクリプトファイル内(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>
1
kein