2013-01-07 35 views
0

我想讀取一個變量名爲ID="_errors"到我的JavaScript使用getElementById,但有關我的實現導致我的JS文件被忽略。從外部JavaScript使用getElementById到一個asp文字變量

這是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> 
... 

這是我在我的.js文件中引用_errors

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

我在這裏引用我PassWord價值,因爲它工作得很好。通過查看我的頁面源,我使用ClientID知道_errors的ID是什麼。我對PassWord也做了同樣的處理。令我擔心的事情(以及可能的錯誤來源)是<asp:Literal ID="_errors" runat="server" />這部分根本不會顯示在頁面源代碼中。任何線索可能是這裏的問題?

+0

您沒有看到在頁面上呈現的Literal控件,因爲沒有設置其Text屬性,它將不會呈現任何內容 - 包括Label控件執行的包裝標記。 – MKS

回答

1

當你把你的頁面文字的控制,它只是呈現的內容,而圍繞它到任何HTML元素

例如:

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

會呈現:

Hello 

因此,致電document.getElementById失敗,因爲沒有該ID的元素...

如果你想字面控件呈現爲跨度的ID,然後將Text屬性是這樣的:

<asp:literal runat="server" Text="<span id='_errors'>Hello</span>" /> 
1

您不能訪問字面通過它的ID,如前所述。

你可以簡單地設置對周圍<span>的ID,並作出這樣的元素 「在服務器上運行」:

... 
    <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 -elements ,以防止顯示問題
  • 不能在同一列中的單元格上設置不同的大小