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

IT技术 javascript asp.net client element
2021-02-23 19:22:58

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

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

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

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

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>

以这种方式调用动作可以防止用同一页面上其他控件的相同动作覆盖一个控件的一个动作。

@PokemonCraft,你觉得这个答案“解决”了你的问题吗?如果是这样,请单击绿色的小对勾 :) 如果不是,请给我们一些反馈,以便我们确定如何为您提供更多帮助。
2021-04-29 19:22:58

您可以使用类选择器。jquery可能会大大简化您的生活。所以你可以对控件应用一个特殊的类:

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

在 DOM 准备好后,在您的外部 javascript 文件中,您可以使用类选择器引用按钮:

$(function() {
    var fooButton = $('.foo');
});
Darin Dimitrov 感谢您的回答,但不幸的是我没有使用 jquery :( 并且不知道如何使用。我想我会将我的项目移至 asp.net 4.0,因为它确实支持静态 ID :)
2021-04-27 19:22:58
嘿 Darin,自从你发布这篇文章以来已经过去了几年,但还是谢谢你。这是使用类选择器而不是元素 id 将输入掩码应用于我网站中的各种元素的一种很棒的、干净的、优雅的方式。
2021-05-04 19:22:58

在脚本文件 ( 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>

.js当我没有其他更好的选择时,我在我的文件中使用以下代码

$("[id$='buttonXXX'])

我知道老问题,但使用 jquery 你可以使用这种方法:

aspx文件

<asp:Button ID="btnCalculate" ClientID="btnCalculate" runat="server" />

外部js文件

$("[ClientID='btnCalculate']").

https://lanitdev.wordpress.com/2009/06/08/extending-jquery-to-select-asp-controls/