後的ID。查找編譯
但是經過該網站已編譯和運行在HTML變化的東西多一點abscure
<asp:Label runat="server" ID="ct100_blahblah_what_mylabel" Text="some text"></asp:Label>
ID和我不能(不知道如何)可靠地預測這將是什麼選擇它與JavaScript。
有沒有辦法向服務器詢問該標籤的ID在任何特定時刻?
什麼是一些關鍵字可以用來找出更多關於這種現象?
後的ID。查找編譯
但是經過該網站已編譯和運行在HTML變化的東西多一點abscure
<asp:Label runat="server" ID="ct100_blahblah_what_mylabel" Text="some text"></asp:Label>
ID和我不能(不知道如何)可靠地預測這將是什麼選擇它與JavaScript。
有沒有辦法向服務器詢問該標籤的ID在任何特定時刻?
什麼是一些關鍵字可以用來找出更多關於這種現象?
您需要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>
請問我能舉個例子嗎? – aggitan 2009-06-21 22:32:22
我相信你正在尋找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");
我可以舉個例子嗎? – aggitan 2009-06-21 22:33:02
這是該死的煩人,我一直受到這個自己。正如答案所指出的那樣,您需要爲此使用ClientID。我所做的是每當需要獲取特定控件元素ID時,使用<%= control.ClientID%>塊。令人遺憾的是非常繁瑣,並且幾乎沒有一個好的解決方案,但可能是唯一的解決方案。 – Skurmedel 2009-06-21 22:37:59