2009-10-30 72 views
0

document.getelementbyid('txtbox')在內容頁面中使用時,因爲它在正常網頁中工作,所以不起作用。在contentpage中使用該值時爲空。 PLZ有人幫我Javascript功能在母版頁中無法正常工作

+0

您確定文本框的ID是txtbox,並且放置在內容頁面本身中嗎? – rahul 2009-10-30 12:40:35

+0

S ...僅在內容頁面中。 – Nila 2009-10-30 12:45:04

+0

我建議您使用IE開發工具欄或Firebug之類的工具來查看您的呈現html的樣子並測試您的腳本 – Matias 2009-10-30 13:08:18

回答

2

的ID將有改變,你可以使用類似:

的document.getElementById(<%= txtTextBox.ClientID%>)值

,或者你可以查看源得到的id希望它不會再改變。

如果您有選擇,我會切換到其他引擎,例如您可以控制HTML的asp.net mvc。

+0

ASP.NET 4將通過新的ClientIDMode提供更好的支持:http://www.asp.net /learn/whitepapers/aspnet4/default.aspx#_TOC3_5 – 2009-10-30 13:08:47

+0

謝謝。這是工作 – Nila 2009-10-30 14:01:16

2

當頁面呈現時,如果文本框在另一個控件下,則Id往往會改變。 可以使用ClientId屬性:

document.getElementById("<%= txtbox.ClientID %>") 
1

閱讀這篇文章

Control ID Naming in Content Pages

ASP.NET允許某些控件是 表示爲命名容器。名稱爲 的容器作爲新的ID 命名空間。 出現在命名容器 中的任何服務器控件的呈現的id值的前綴爲 ,命名容器的控制ID爲 。

命名容器不僅改變了 渲染的id屬性值,也 影響控制怎麼可能 從 ASP.NET頁面的代碼隱藏類編程引用。 FindControl(「controlID」)方法 通常用於以編程方式 引用一個Web控件。但是, FindControl不會穿透 命名容器。因此, 不能直接使用Page.FindControl方法在GridView或其他命名容器中引用 控件。

主頁面和ContentPlaceHolders 都是作爲命名 容器實現的。