2009-06-21 48 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