2009-11-19 81 views
5

如何在外部js文件中使用服務器端腳本來獲取對dom元素的引用?外部js文件中的Asp.Net腳本

以下內容在用作內聯腳本時按預期工作,但在將其移至外部js文件時返回null。

$("#<%= gridResults.ClientID %>"); 
+3

請參閱http://stackoverflow.com/questions/844970/is-there-a-better-way-to-get-clientids-into-external-js-files和http://stackoverflow.com/questions/ 1232465/how-to-use-jquery-select-element-by-id-and-asp-net-without-puts-ctl00-everyw/1232498#1232498對於一些常規解決方案。有關jQuery解決方案,請參閱http://stackoverflow.com/questions/497802/how-to-stop-asp-net-from-changing-ids-in-order-to-use-jquery/497872#497872。 – 2009-11-19 15:10:50

回答

11

你需要有一個創建一個JavaScript變量內嵌腳本塊。應該在您的外部JavaScript文件之前添加此塊。一旦你這樣做了,你可以在你的外部JavaScript文件中引用這個變量。

<script type="text/javascript"> 
    var grid = $("#<%= gridResults.ClientID %>"); 
</script> 

<script type="text/javascript" src="path/to/my.js"></script> 
1

你不能把#<%= gridResults.ClientID %>,因爲gridresults.ClientID是特定於該asp.net頁面。

你可以這樣做:

<stript src="yourfile" type="text/javascript"> <!--link to external js file--> 

<script type="text/javascript"> 
    var grid = $("#<%= gridResults.ClientID %>"); 

    yourfunction (grid); 

</script> 
0

你想要發生什麼不能。外部JavaScript文件不被後面的ASP.NET頁面代碼解析,所以ASP.NET的功能不可用。

1

如果您只是使用CssClass屬性的網格上的唯一類,那麼您應該能夠訪問網格而不必知道它的clientID是什麼。