我想獲得一箇舊的ASP經典項目作爲ASP.NET webfroms解決方案啓動並運行,並且出現了將javascript連接到ASP控件的問題。下面是在.aspx代碼:Javascript getElementById無法看到ASP服務器控件
<asp:TextBox id="groupOwner2" CssClass="textbox" Runat="server" Enabled="False" TextMode="SingleLine"></asp:TextBox>
這應該操縱它看起來像這樣的JavaScript,並試圖清除文本框:
function OnChange() {
// clear existing data
document.getElementById('<%=groupOwner2.ClientID%>').value = "";}
原來,在JavaScript控件參考看起來像這樣:
document.Form1.elements["groupOwner2"]
而且這也沒有工作(不出意外)。我已經嘗試了一些這些變體,但沒有任何工作,我剛剛得到「腳本被觸發時,JavaScript運行時錯誤:無法設置未定義或空引用的屬性'值」。爲了記錄,該腳本正在被另一個控件觸發,這就是爲什麼在文本框ASP代碼中未提及onChange()函數的原因。
任何輸入將不勝感激!
不要使用服務器端代碼構建JavaScript。你的HTML屬於'.html'文件,你的CSS屬於'.css'文件,同樣你的JS屬於'.js'文件。使用'[class]'屬性,並根據類進行選擇。 ASP使得ID變得混亂。 – zzzzBov
@zzzzBov「類」不一定是選擇元素的最佳方式。看看爲什麼Facebook使用'data-sigil'屬性。 http://www.phabricator.com/docs/javelin/article/Concepts_Sigils_and_Metadata.html –
您是否驗證過生成的腳本與生成的HTML中的ID匹配? –