2009-06-21 42 views
0

后的ID。查找编译

但是经过该网站已编译和运行在HTML变化的东西多一点abscure

<asp:Label runat="server" ID="ct100_blahblah_what_mylabel" Text="some text"></asp:Label> 

ID和我不能(不知道如何)可靠地预测这将是什么选择它与JavaScript。

有没有办法向服务器询问该标签的ID在任何特定时刻?

什么是一些关键字可以用来找出更多关于这种现象?

+0

这是该死的烦人,我一直受到这个自己。正如答案所指出的那样,您需要为此使用ClientID。我所做的是每当需要获取特定控件元素ID时,使用<%= control.ClientID%>块。令人遗憾的是非常繁琐,并且几乎没有一个好的解决方案,但可能是唯一的解决方案。 – Skurmedel 2009-06-21 22:37:59

回答

3

您需要ClientID属性。这包含运行时控件的生成标识。您可以在后面的代码中发出一些JavaScript,将控件的客户端ID设置为JavaScript变量,以便引用它。

编辑:添加例子

下会发现使用客户端ID标签,然后更新它的文本。

 
    <html> 
    <body> 
     <asp:Label runat="server" ID="mylabel" Text="some text"></asp:Label> 

     <script language="javascript"> 
      var mylabelID = "<%= mylabel.ClientID %>"; 
      var label = document.getElementById(mylabelID); 
      label.innerHTML += " changed"; 
     </script> 
    </body> 
    </html> 
+0

请问我能举个例子吗? – aggitan 2009-06-21 22:32:22

3

我相信你正在寻找ClientID属性。

ClientID值经常用于 编程访问呈现在 客户端脚本的控制的HTML 元件。

你的另一种选择是包装你控制在一个像这样的HTML元素:

<span id="foo"> 
    <asp:Label runat="server" ID="mylabel" Text="some text"></asp:Label> 
</span> 

由于这个外部因素不具备runat="server"属性,它的ID不会被渲染上的改变。这将意味着你的JavaScript函数将不得不改变,从跨度foo拉的内部元件,或者如果您正在使用像jQuery JavaScript框架,你可以拉标签背面是这样的:

$("span#foo span"); 
+0

我可以举个例子吗? – aggitan 2009-06-21 22:33:02