2011-11-15 69 views
1

在我的應用程序中,我只是想使用javascript在文本框中提醒值。getElementById在asp.net中不工作

aspx頁面代碼

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 

    <script type="text/javascript"> 
     alert("hi"); 
     alert(document.getElementById('<%=textbox1.ClientID%>').value); 
</script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
    <asp:TextBox runat="server" ID="textbox1" Text="asdsad"> 
      </asp:TextBox> 
    </div> 
    </form> 
</body> 
</html> 

我只得到警報「嗨」 ..after,我得到一個錯誤「所需的對象」。什麼原因?

+0

將其包裝在document.ready() –

+0

爲什麼我得到了一個投票? ..請評論..因此,我可以改善,在我的下一篇文章 –

+0

@獅子..:).... –

回答

4

您的代碼在元素顯示在屏幕上之前正在運行。嘗試 -

window.onload = function() { 
    alert("hi"); 
    alert(document.getElementById('<%=textbox1.ClientID%>').value); 
} 

或者將您的腳本移動到頁面底部,如Tejs在下面的評論中所建議的那樣。

+1

基本上這個。頭元素中的腳本在主體加載之前運行。最簡單的方法就是將'

1

頁面尚未加載。你必須把代碼放入函數中,然後用

onload = yourfunction;

1

請更改腳本位置,將腳本代碼放在頁面底部。只需完成表單標記之後。

1

你試圖得到的ID是一個服務器端的ID,而不是元素的HTML ID,如果你使用螢火蟲檢查,你會注意到ID有多餘的字母和數字由asp.net插入,我'd建議使用jquery代替步入DOM來選擇特定的元素。

您還可以添加名稱和getByName。