引用:http://www.soaspx.com/dotnet/asp.net/tech/tech_20120302_8685.html
方法一:使用内联JS访问器
首先在页面注册该控件:
<script type="text/javascript">
function getClientId() { var paraId1 = '<%= Button1.ClientID %>';//注册控件1 var paraId2 = '<%= TextBox1.ClientID %>';//注册控件2 return {Id1:paraId1,Id2:paraId2};//生成访问器 } </script> 然后在页面中引用外部JS:
<script type="text/javascript" src="JScript.js"></script>//引用外部js
在外部js文件JScript.js中:
JScript.js
function GetID()
{
var btn=document.getElementById(getClientId().Id1);
btn.value="OKbtn1";
var btn=document.getElementById(getClientId().Id2);
btn.value="OKbtn2";
}
方法二:使用JS全局变量
页面:<script type="text/javascript"> var globals = {}; globals.controlIdentities = {}; globals.controlIdentities.someControl1 = '<%= Button1.ClientID %>'; globals.controlIdentities.someControl2 = '<%= TextBox1.ClientID %>'; </script>
<script type="text/javascript" src="JScript.js"></script>
JS文件:
function ChangeText()
{
var btn=document.getElementById(globals.controlIdentities.someControl1);
btn.value="OKbtn"; }在上面两种方法中,也没有真正的实现aspx和js的完全解耦,所以,在js文件中,最好还是加上:
///<reference path="Default5.aspx"/>
以上是网上的一种解决方法个人决得虽然可以解决问题,但是还会有一小部份的js代码要写在html页面中。而用jQuery中的筛选器就完全只在外部js中编写jquery代码就能获得服务器控件的相关属性。