在使用母版页的时候,发现源文件控件元素的ID和生成HTML文件的ID不一致。表单from的name属性和id属性变成了aspnetForm,控件的id属性被无缘无故了加上了ctl00_ContentPlaceHolder1_前缀,其name属性也加上了ctl00$ContentPlaceHolder1$前缀,在使用javascript的时候就无法正确获得ID值进行下一步操作,如何解决这个问题呢?下面介绍在母版页显示系统时间为例进行说明。步骤如下:
//javascript获得系统时间代码
<script language="javascript">
function show()
{
var t; //获得系统当前时间
t=new Date();
var s;
s =t.getFullYear ()+"年";
s+=t.getMonth ()+"月";
s+=t.getDay ()+"日";
s+=t.getHours()+":"; //获得时
s+=t.getMinutes()<10?"0"+t.getMinutes():t.getMinutes(); //获得分
s+=":";
s+=t.getSeconds()<10?"0"+t.getSeconds():t.getSeconds();
document.getElementById('<%= lblmasterTime.ClientID %>').innerText=s;
setTimeout("show()",1000)
}
</script>
2. 在母版页的body里面修改如下,使其载入时发生:
<body onload="show()">
//为System.Web.UI.WebControls.TextBox 服务器端控件
<asp:Label ID="Label1" runat="server"></asp:Label>
备注:document.getElementById('<%= Label1.ClientID %>').innerText=s;为技术关键点,为获得客户端的id,就需要用Label1.ClientID
由于种种原因(比如使用了MasterPage,或者GridView中的模版列),一个控件在设计时的ID往往不同于生成页面后的ID,为了获得控件客户端ID,我们可以从生成的页面入手,取控件id有以下三种修改方法:
document.getElementById("ctl00$编辑区ID$控件ID");
document.getElementById("ctl00_编辑区ID_控件ID");
document.getElementById("<%= 编辑区ID_控件ID.ClientID %>");
【上面前两个方法的“ct100”都是客户端生成的代码,我们只要改变原来的值就可以了,比如本例js代码可以改成这样:document.getElementById('ctl00_Label1').innerText=s;同样可以实现】
本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/cxb_wind/archive/2007/11/26/1902929.aspx
本文介绍了解决母版页中控件ID变化导致JavaScript无法正常获取的问题,并提供了三种获取客户端ID的方法。
2137

被折叠的 条评论
为什么被折叠?



