日期:2014-05-20  浏览次数:20371 次

使用Response.Write("<script>....")无法获取客户端对象,谢谢!
使用Response.Write( " <script> .... ")
或者RegisterClientScriptBlock
或者RegisterStartupScript

都无法调用var   obj=document.getElementByID( "id ")
最后obj都是空,怎么办,是位置不对吗?

谢谢!

------解决方案--------------------
05里面这样写
document.getElementByID( " <%=服务器控件id.ClientID %> ")
------解决方案--------------------
Response.Write( " <script> var obj=document.getElementByID( ' "+textBox.ClientID+ " ') </script> ")
------解决方案--------------------
Response.Write( " <script> ");输出在文件头部,一打开就执行。

RegisterClientScriptBlock一般返回的是客户端函数的包装,而RegisterStartupScript返回得函数在document装载完成后会执行,类似于我们平时所说的body onload= "f() "里面的函数;这两个方法在客户端呈现的代码位置不同,

RegisterClientScriptBlock在 <form runat=server> 之后,而RegisterStartupScript在 </form> 之前

用RegisterClientScriptBlock应该没有问题的

可以更改一下var obj=document.getElementByID( "id ")这儿的id为字符串,不要与关键字冲突


------解决方案--------------------
LS解释了一部分
Response.Write是肯定不行的
RegisterClientScriptBlock也不行
因为此时你要获取的控件还没有加载呢

RegisterStartupScript是可以的
------解决方案--------------------
学习!
------解决方案--------------------
楼主可参见我的文章
<后台调用前台javascript方法报错:“缺少对象”的解决方法>

http://www.cnblogs.com/heekui/archive/2007/02/08/644963.html


------解决方案--------------------
1.用RegisterStartupScript 2.检查id是否正确,用控件的clientID 如 "document.getElementById( ' "+ txt1.ClientID+ " ') "
------解决方案--------------------
位置不对。客户端脚本如果放在head里面,会先执行。最好放在后面。
------解决方案--------------------
RegisterStartupScript