2012-02-14 35 views
3

我知道這是一個非常普遍的問題。我試圖得到一個「回車鍵」事件來通過javascript調用頁面上某個按鈕的點擊。然而,我不能在我的生活中從我的asp.net頁面通過其id或名稱獲取單個元素。Javascript無法GetElementById在ASP.NET C#

這是我的理解,這個問題是相關的JavaScript位於何處,以及是否元素已被呈現的時間加載的JavaScript或這種性質的東西?

每次我嘗試使用var x = document.getElementById('btn_AddAdmin')時,我都會得到一個空值。

我的asp.net頁面有它繼承的SiteMaster頁面。我已經包含了我的asp.net頁面和SiteMaster頁面的修剪版本。

ASP.NET頁:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" 
    AutoEventWireup="true" CodeBehind="Admin.aspx.cs" Inherits="HERMES.Admin" %> 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
<input type="text" id="txt_AddAdmin" runat="server" onkeypress="Populate()" /> 

母版頁:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" 
     Inherits="HERMES.SiteMaster" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
<head runat="server"> 
    <title></title> 
    <link href="./Styles/Site.css" rel="stylesheet" type="text/css" /> 
    <asp:ContentPlaceHolder ID="HeadContent" runat="server"> 
    </asp:ContentPlaceHolder> 
</head> 
<body> 
    <form runat="server"> 
</form> 
</body> 

很抱歉的格式,我好像做錯了什麼......

我試圖放置JavaScript在很多不同的位置 - 從sitemaster頁面到asp.net頁面的頂部和底部。這兩種方式都沒有運氣

+2

要回答你的第一個問題,是的,document.getElementById的位置很重要。您需要在ID爲「btn_AddAdmin」的元素已由網絡瀏覽器呈現或您知道dom已準備就緒後調用此方法。從你的問題中不清楚你的JavaScript包含在哪裏。我只能看到當使用id txt_AddAdmin輸入文本時,調用函數「Populate()」。我建議你在這裏發佈你呈現的html頁面的源代碼。也許使用http://jsfiddle.net/使事情變得更容易。 – 2012-02-14 21:05:21

+0

我試圖根據我的評論中的最後一行重新定位JavaScript代碼,並且它不管用。然而,@ Xander已經涵蓋了問題所在。還是)感謝你的建議! – ImGreg 2012-02-14 21:10:28

回答

6
var x = document.getElementById('<%= btn_AddAdmin.ClientID %>'); 

如果你的按鈕是Server Control它預先考慮命名方案的input按鈕,以便它可以在postback綁定回合適的服務器控件。因此需要使用ClientID屬性來檢索「呈現的id」。

欲瞭解詳情,請訪問:

谷歌將其與冰:

  • 的clientid
  • ASPNET WebForms的客戶端編程
+0

哇,實際上工作。爲什麼這種方法有效,而不是其他方法? – ImGreg 2012-02-14 20:58:28

+2

@ImGreg - 服務器端控件(其中一個具有'runat =「server」'屬性)的'id'屬性表示控件的_server side_ ID,供C#後面的代碼使用。這種控件的'ClientId'屬性是發射的'id',因爲它會出現在瀏覽器中供javascript使用。 – Oded 2012-02-14 21:00:26

+0

Gottcha。這就說得通了。不過,我顯然需要閱讀更多內容才能更好地理解這些內容的工作原理。任何相關的閱讀鏈接?再次感謝btw。 – ImGreg 2012-02-14 21:02:24