0

我正在尝试使用 将名为的变量读取ID="_errors"到我的 javascript 中getElementById,但是关于我的实现的某些内容会导致我的 JS 文件被忽略。

这是 HTML:

...
    <asp:TextBox ID="_password" CssClass="login" runat="server" TextMode="Password" />
    <label class="mylabel" for="<%=_errors.ClientID%>"></label>
    <table id="table1">      
        <tr>
            <td style="width: 100px;"></td>        
            <td><span class="response1" runat="server"><asp:Literal ID="_errors" runat="server" /></span></td>                           
        </tr>
        <tr>
            <td style="width: 280px;"></td>
            <td><asp:Button ID="_login" CssClass="mybutton" runat="server" Text="Login" /></td>
        </tr>
    </table>
...

这就是我_errors在 .js 文件中引用的方式:

var PassWord            = document.getElementById('_login__password').value;
var Errors              = document.getElementById('_login__errors').value;

PassWord在这里引用了我的值,因为它工作得很好。通过查看我的页面源,我使用 ClientID 来了解 ID 是什么。我_errorsPassWord. 让我担心的事情(以及错误的可能来源)是该部分<asp:Literal ID="_errors" runat="server" />根本没有出现在页面源中。关于这里可能是什么问题的任何线索?

4

2 回答 2

1

如前所述,您无法通过其 ID 访问文字。

您可以简单地在周围设置 ID<span>并使该元素“在服务器上运行”:

...
    <asp:TextBox ID="_password" CssClass="login" runat="server" TextMode="Password" />
    <label class="mylabel" for="<%=_errors.ClientID%>"></label>
    <table id="table1">      
        <tr>
            <td style="width: 100px">&nbsp;</td>        
            <td><span ID="_errors" class="response1" runat="server" /></td>                           
        </tr>
        <tr>
            <td style="width: 100px">&nbsp;</td>
            <td><asp:Button ID="_login" CssClass="mybutton" runat="server" Text="Login" /></td>
        </tr>
    </table>
...

笔记:

  • 我还添加&nbsp;到您原本为空的td元素中,以防止显示问题
  • 您不能在同一列中的单元格上设置不同的大小
于 2013-01-07T20:18:35.160 回答
1

当您在页面中放置文字控件时,它只是呈现内容而不将其包含在任何 html 元素中

例如:

<Asp:literal runat="Server" Text="Hello" />

将呈现为:

 Hello

因此,调用document.getElementById失败,因为没有具有该 id 的元素......

如果您希望文字控件呈现为带有 id 的跨度,则将 Text 属性设置如下:

<asp:literal runat="server" Text="<span id='_errors'>Hello</span>" />
于 2013-01-07T18:22:01.507 回答