2012-01-12 42 views
0

是否有可能寫一個javascript函數可以通過它的「身份證」訪問HTML和Asp.net控件的通用JavaScript函數?

獲得元素我試圖用這個功能

function getEleById(ele,IsServerElemt) { 
     var elmt ; 
     if(IsServerElemt) 
      elmt = '<%='+ ele + '.ClientID%>' ; 
     else 
      elmt = ele; 

     return document.getElementById(elmt); 
} 

在這裏,我們有HTML以及Asp.Net文本框。

<input type="text" id="txtname" /> 

<asp:TextBox ID="txtname" runat="server"></asp:TextBox> 

和IAM試圖調用該函數如下所示

var name = getEleById('txtname',true) ; 

true指定txtName的是服務器控制

是否有可能有一個通用的JavaScript方法用於HTML以及天冬氨酸。網絡控制。

任何幫助,將不勝感激。

感謝

+1

在這種情況下,「ele」是什麼?它是一個字符串嗎?一個控制?您絕對不能將您在此處的方式混合使用客戶端和服務器端腳本。這個平面將不能正確編譯。 – 2012-01-12 18:36:27

+0

ele是一個字符串。 var name = getEleById('txtname',true); 這裏true指定txtname是服務器控制。 – Mourya 2012-01-12 18:44:51

回答

0

通過this article閱讀。它解釋了生成元素ID的各種方法。

我要做的就是創建文本框我這樣的:

<asp:TextBox ID="txtname" runat="server" ClientIDMode="Static" /> 

的設置的ClientIDMode爲靜態將呈現ID設爲正是你在Asp.Net標記類型。它將呈現出的東西是這樣的:

<input id="txtname" name="?????" /> 

然後你的JavaScript可以這樣寫:

function getEleById(elementID) { 
    return document.getElementById(elementID); 
} 
+0

John感謝您的回覆,ClientIDMode功能是在.NET 4.0中引入的。我使用.net 3.5 – Mourya 2012-01-12 18:08:58

2

創建文本框。

<asp:TextBox ID="txtname" runat="server"></asp:TextBox> 

您可以訪問它。

var textbox= $find("<%=txtname.ClientID %>"); 
+0

是的我可以訪問文本框使用$ find(「<%= txtname.ClientID%>」),但我想訪問所有的Asp.net控件和我的網頁上的HTML控件使用單個JavaScript函數。 var txtname = getEleById(txtname,true); ,這裏的true表示它的服務器端控件。 – Mourya 2012-01-12 18:37:20

1

如何使用JQuery的CSS選擇器?

1) $('.txtName') //JQuery CSS selector 

<asp:TextBox ID="txtname" class="txtName" runat="server"></asp:TextBox> 

您可以用這種方式把你所有的腳本在外部JS文件。 JQuery CSS Selector