相信很多朋友遇到过获取服务器控件的这个小需求,网上很多人都是document.getElementById("服务器控件ID"),这样子获得的结果为空。因为ASP.NET在生成页面之后控件的ID 产生了变化,大概就是XXXX_自身的原先ID(如Button的原先ID为Button1,生产之后在页面源代码可以看到变成XXXX_Button1).
接下去展示如何实现:『方法就是通过标记名称,Button在html的标记为input,所以通过getElementsByTagName获得一个Object[]数组结果,然后在循环匹配。。就可以找到了。简单吧!』
function go()
{
var tags=document.getElementsByTagName("input");
for(var i=0;i<tags.length;i++)
{
if(tags[i].id.indexOf("_"+"Button1")>-1)
{
// alert(tags[i].id);
document.getElementById(tags[i].id).click();
}
}
}
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" style="display:none"/>
上面是笔者为了执行按钮事件才这样写的,依据自己实际需求进行更改。。。。。
接下去我就把调用上面那个事件的JS顺便贴出来『笔者是为了关闭窗体的时候,调用上面的按钮事件,也就是函数GO 咯』
//判断窗体是否真正关闭
window.onbeforeunload = function()
{
var n = window.event.screenX - window.screenLeft;
var b = n > document.documentElement.scrollWidth-20;
if(b && window.event.clientY < 0 || window.event.altKey)
{
//alert("是关闭而非刷新");
}
else
{
//当前用户离线
go();
}
}
至于,按钮的后台代码我就不贴了,和这些没太大关联,逻辑就是。。但窗体关闭,,,刷新时,,执行Button1的按钮事件
用心走好每一步!