当前位置:编程学习 > C#/ASP.NET >>

document.getElementById('" + Button2.ClientID + "').click(); 问题

Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "", "document.getElementById('" + Button2.ClientID + "').click();", 


为什么就说找不到getElementById为null --------------------编程问答-------------------- string.Format("document.getElementById('{0}')",Button2.ClientID); --------------------编程问答-------------------- 还是不行呀 --------------------编程问答-------------------- Page.ClientScript.RegisterClientScriptBlock(Page.GetType(),   "",   "document.getElementById('Button2').click();",    --------------------编程问答-------------------- 因为你的button2控件事服务器控件 ,他的clientID属性在IE生成六览的时候会自动加上前缀,然后和你是用clientID获得的组成一个新的ID,所以在客户端你是找不到的! --------------------编程问答-------------------- 完全没有问题我刚试验过了

Page.ClientScript.RegisterClientScriptBlock(Page.GetType(),   "",   "document.getElementById('"   +   Button2.ClientID   +   "').click();");  

请注意你的拼写 好像少个括号
Button2.ClientID就是指客户端控件id 没有任何问题 --------------------编程问答-------------------- 我刚用2005(汗),用这个方法也找不到,即使用Button2.ClintId也不行,而且查看html代码,发现document.getElementById()的参数跟html控件Id是一样的,另外document.all也不行 --------------------编程问答-------------------- ClientScript.RegisterClientScriptBlock(this.GetType(), "empty", "<script language=\"javascript\" type=\"text/javascript\">alert('" + txt.ToolTip + "');document.getElementById('" + txt.ClientID + "').focus();</script>");
这是我的代码 --------------------编程问答-------------------- 总算折腾明白了
因为RegisterClientScriptBlock注册脚本位置
是在是在form之后第一行,此时客户端Button2还没有生成,所以无法点击click()
所以你可以使用RegisterStartupScript注册脚本位置
是form结束之前最后一行,此时客户端Button2已经生成
还有就是你必须加上一个参数true 以确保输出<script></script>标签
ClientScript.RegisterStartupScript(Page.GetType(),"","document.getElementById('" + Button2.ClientID + "').click();",true);

--------------------编程问答-------------------- 所以注册脚本时
如果语句中有click()或者focus()必须保证客户端控件产生以后才可以
此时建议使用RegisterStartupScript

如果只是注册一些客户端函数 当然RegisterClientScriptBlock是完全可以的
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,