如何在外部javascript文件中获取asp.net客户端ID

Mon*_*RPG 14 javascript asp.net client element

当我使用嵌入式javascript 函数时,我可以使用以下代码获取元素的客户端ID:

document.getElementById('<%=buttonXXX.ClientID%>' )
Run Code Online (Sandbox Code Playgroud)

但是现在我使用外部javascript文件进行缓存和更快的渲染,这段代码不再用于获取元素的客户端ID,它给出了错误.

如何使用 asp.net 2.0,netframework 3.5,c#,iis 7.5外部javascript文件中获取元素的客户端ID

Ari*_*tos 30

我可以提出两种方法.

第一种方式

在调用javascript之前定义变量,在可编译的.aspx文件中.

var ButtonXXXID = <%=buttonXXX.ClientID%>
// and now include your javascript and use the variable ButtonXXXID
Run Code Online (Sandbox Code Playgroud)

第二种方式

在外部javascript文件中,将您的代码编写为:

function oNameCls(ControlId1) {

    this.ControlId1 = ControlId1;

    this.DoYourWork1 = function() {
        // use the control id.
        // this.ControlId1
    }   
}
Run Code Online (Sandbox Code Playgroud)

并称呼你的行为.

<script>
    // init - create
    var <%=this.ClientID%>MyCls = new oNameCls('<%=Control1.ClientID%>');
    // do your work
    <%=this.ClientID%>MyCls.DoYourWork1();
</script>
Run Code Online (Sandbox Code Playgroud)

以这种方式调用操作可防止从同一页面上的其他控件使用相同操作覆盖一个控件中的一个操作.


Dar*_*rov 5

您可以使用类选择器。jQuery可能会大大简化您的生活。因此,您可以将特殊类应用于控件:

<asp:LinkButton ID="foo" CssClass="foo" runat="server" Text="foo" />
Run Code Online (Sandbox Code Playgroud)

并且在您的外部javascript文件中,一旦DOM准备就绪,您可以使用类选择器来引用按钮:

$(function() {
    var fooButton = $('.foo');
});
Run Code Online (Sandbox Code Playgroud)