我的document.getElementById函数对我知道的值返回null。具体来说,我尝试:
//in an external .js file
var UserName = document.getElementById('<%=_username.ClientID%>');
使用某些条件对其进行测试,由于元素id值为null,因此不会发生这种情况。我在这里在用户控制文件中定义了_username:
...
<fieldset class="login">
<legend class="login">Login</legend>
<label for="<%=_username.ClientID%>">
User Name:</label>
<asp:TextBox ID="_username" runat="server" CssClass="login" />
<label for="<%=_password.ClientID%>">
Password:</label>
<asp:TextBox ID="_password" runat="server" CssClass="login" TextMode="Password" />
<br />
<span class="response">
<asp:Literal ID="_response" runat="server" /></span>
<asp:Button ID="_login" runat="server" Text="Login"/>
</fieldset>
我通过测试一个不需要使用getElementById()的简单函数来验证我的页面正在监听javascript文件。
答案 0 :(得分:0)
假设你说的其余部分是真的,问题很可能是
var UserName = document.getElementById('<%=_username.ClientID%>');
在dom准备好之前开始运行。尝试将此脚本移至body
部分的最末端,以确保在此运行之前圆顶已准备就绪。
即
<script type='text/javascript'>
// rest of script
var UserName = document.getElementById('<%=_username.ClientID%>');
// rest of script
</script>
</body>
答案 1 :(得分:0)
你的标题是“外部javascript文件”。如果这是在外部javascript文件中:
var UserName = document.getElementById('<%=_username.ClientID%>');
这不起作用,因为<%= %>
符号在JS文件中不起作用,只在ASPX或ASCX中起作用。