0

我的 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 文件。

4

2 回答 2

0

假设您所说的其余部分是正确的,那么问题很可能是

var UserName = document.getElementById('<%=_username.ClientID%>');

在 dom 准备好之前运行。尝试将此脚本移动到您的body部分的最后,以确保圆顶在运行之前准备好。

IE

    <script type='text/javascript'>
        // rest of script
        var UserName = document.getElementById('<%=_username.ClientID%>');
        // rest of script
    </script>
</body>
于 2012-12-20T20:13:53.730 回答
0

您的标题显示“外部 javascript 文件”。如果这是在外部 javascript 文件中:

var UserName = document.getElementById('<%=_username.ClientID%>');

这不起作用,因为<%= %>符号在 JS 文件中不起作用,只有 ASPX 或 ASCX。

于 2012-12-20T20:18:54.930 回答