【问题标题】:How to get asp.net client id at external javascript file如何在外部 javascript 文件中获取 asp.net 客户端 ID
【发布时间】:2011-04-20 05:48:18
【问题描述】:

当我使用嵌入式 javascript functions 时,我可以使用以下代码获取元素的 client id

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

但现在我使用 外部 javascript 文件 进行缓存和更快的渲染 并且此代码不再适用于获取 client id's 元素,它会给出错误。

如何使用 外部 javascript 文件 获取 client id's 元素 asp.net 2.0 , 网络框架 3.5 , c# , iis 7.5

【问题讨论】:

    标签: javascript asp.net client element


    【解决方案1】:

    我可以建议两种方法。

    第一种方式

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

    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,你觉得这个答案“解决”了你的问题吗?如果是,请单击绿色的小复选标记:) 如果不是,请给我们一些反馈,以便我们确定如何为您提供更多帮助。
    【解决方案2】:

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

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

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

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

    【讨论】:

    • Darin Dimitrov 感谢您的回答,但不幸的是我没有使用 jquery :( 也不知道如何使用。我想我会将我的项目移动到 asp.net 4.0,因为它确实支持静态 ID: )
    • 嘿,达林,自从你发布这个帖子已经过去几年了,但无论如何,还是谢谢你。使用类选择器而不是元素 ID 将输入掩码应用于我网站中的各种元素,这是一种很棒、干净、优雅的方式。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        我知道老问题,但是使用 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/

        【讨论】:

          猜你喜欢
          • 2011-10-22
          • 1970-01-01
          • 2013-03-18
          • 2014-06-02
          • 2012-11-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-19
          相关资源
          最近更新 更多