在客户端的javascript脚本里,想操作服务器控件时,先要得到控件的引用。一般先获得服务器控件的在web页中的ID,通过调用documnet 对象的方法,就可以获得服务器控件的引用。
如:在网页定义了一个服务器控件
<asp:DropDownList id="EquipmentList" runat="server" Width="96px"></asp:DropDownList>
然后在脚本中可通过语句 var list=document.getElementById("EquipmentList"); 获得了控件的引用,然后就可以操作控件了,如:list.options.length=3; 也可以使用 document.all["EquipmentList"].options.length=3; 一句实现。刚刚学web开发,一直这么用没啥问题。
遇到问题: 定义了一个用户控件,用户控件里面包含包含若干服务器控件,在用户控件中写脚本控制服务器控件。仍然按照 上面的方法做,出错。提示是:document.getElementById("EquipmentList") 为空或不是对象,说明没有找到EquitmentList 控件,没有获得引用。经求教得知,用户控件放在网页上时,其内部的服务器控件的ID会改变,不是在用户控件中定义的那个ID了。 要获得这个ID 要用如下语句:<%=服务器控件名.ClientID%> ,修改用户控件中脚本代码,用:<%=服务器控件名.ClientID%> 替换原来的ID,如:
var list=document.getElementById("EquipmentList"); 换为 var list=document.getElementById("<%=EquipmentList.ClientID%>"); 这样代码运行成功。