![](/img/trans.png)
[英]JavaScript getElementById for ASP.NET Control returns null?
[英]JavaScript getElementById returns NULL in asp.net
我為此一直掙扎了幾天,但是我沒有運氣。
問題是這樣的,我有一個detailsview,它是多視圖視圖的一部分,但是更重要的是,嵌套在我的detailsview中的是許多控件。 在這些控件中,我對其中的3個,兩個下拉列表和一個文本框感興趣。 在我的一個下拉列表中,我附加了一個javascript函數,當用戶從下拉列表中選擇一個值時,該函數可對onchange事件起作用
現在,在我的javascript函數上,當用戶使用“ this”作為傳遞參數選擇值時,我可以從下拉列表中獲取值。 但是,在其余的兩個控件,文本框和另一個下拉列表上,我無法獲取該控件。
我嘗試了以下代碼片段(這已在兩個控件上使用):
document.getElementById('<%= dv.FindControl("ddlTrust.ClientID") %>'); //this returns null
document.getElementById('<%= ddlTrust.ClientID %>'); //errors - says that control has not been declared
document.getElementById("ddlTrust"); //this returns null
有任何想法嗎?
dv.FindControl("ddlTrust.ClientID")
將查找客戶端ID為ddlTrust.ClientID
。 這就是為什么您的第一條語句返回null的原因。 但是我認為這3種方法中,您最接近的。
我個人建議在與嵌套ASP.NET控件一起使用時使用jQuery,它可以使工作變得更加輕松。
但是,如果您希望使用原始javascript,則可以將javascript放在項目模板內(因此每個項目都會重復使用),然后執行以下操作:
document.getElementById(<%=ControlID %>);
然后在后面的代碼中將ControlID
作為全局變量,並在dv
綁定上設置此值:
ControlID = ((DropDownList)e.Item.FindControl("ddlTrust")).ClientID;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.