Javascript 问题

懒得起名字 2012-03-22 04:08:51
一段JS
function cl() {
window.parent.document.getElementById('txtDepartment').value = document.getElementById('Text1').value;
}
}在html中调用 可以正常运行,但是到CS 后台代码中 调用
ClientScript.RegisterStartupScript(GetType(), "method", "<script>cl();</script>");
就报 window.document.getElementById('txtDepartment').value 为空或者不是对象
怎么回事啊?
...全文
173 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
hwbox 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 clfx1314 的回复:]

引用 15 楼 hwbox 的回复:
页面有报错么?你引入jquery js文件了么?

非常感谢您的一直关注和解答
哈哈 要不加Q远程吧 如果您有空的话
271439353
[/Quote]
我没有qq
hwbox 2012-03-23
  • 打赏
  • 举报
回复
天哪,你到底是用的帧还是弹出窗口啊,你脚本里用的是parent,又说关闭子窗口,你这描述的也太混乱了。如果是弹出窗口请用opener
懒得起名字 2012-03-23
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 hwbox 的回复:]
页面有报错么?你引入jquery js文件了么?
[/Quote]
非常感谢您的一直关注和解答
哈哈 要不加Q远程吧 如果您有空的话
271439353
懒得起名字 2012-03-23
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 hwbox 的回复:]
页面有报错么?你引入jquery js文件了么?
[/Quote]
引用了
还是 说 对象找不到 或者为空
h465716405 2012-03-23
  • 打赏
  • 举报
回复
或者用Session后台赋值。。。
hwbox 2012-03-23
  • 打赏
  • 举报
回复
页面有报错么?你引入jquery js文件了么?
懒得起名字 2012-03-23
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 hwbox 的回复:]
引用 10 楼 clfx1314 的回复:
我点击btnOK 执行click事件,也是正常执行 cl() 方法 成功把值写到父窗口中


不是已经告诉你了么,你后台注册的前台脚本在浏览器中输入并执行的时候,页面还没有加载完成你的那个对象还得不到,要让页面加载完成再执行。怎么完全无视了。
[/Quote]

呵呵 你说的很有道理,
但是 我这样调用 还是不行
你直接调用了,页面还没加载完成。
改成在页面完成后调用
ClientScript.RegisterStartupScript(GetType(), "method", "<script>$(document).ready(function(){cl();});</script>");
hwbox 2012-03-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 clfx1314 的回复:]
我点击btnOK 执行click事件,也是正常执行 cl() 方法 成功把值写到父窗口中
[/Quote]

不是已经告诉你了么,你后台注册的前台脚本在浏览器中输入并执行的时候,页面还没有加载完成你的那个对象还得不到,要让页面加载完成再执行。怎么完全无视了。
happytonice 2012-03-22
  • 打赏
  • 举报
回复
document.getElementById(<%id.ClientID%>)这种方式比较有保证,
另外,可以这样写:
web放一个Label
mylabel.Text="<script>cl();</script>";
就行了,简单易懂。
色拉油 2012-03-22
  • 打赏
  • 举报
回复
正解[Quote=引用 3 楼 gaind 的回复:]

服务器控件是无法用document.getElementById直接去获取

只能说通过document.getElementById(<%id.ClientID%>)去获取
[/Quote]
懒得起名字 2012-03-22
  • 打赏
  • 举报
回复
我点击btnOK 执行click事件,也是正常执行 cl() 方法 成功把值写到父窗口中
懒得起名字 2012-03-22
  • 打赏
  • 举报
回复
可能是我没把问题表述清楚哦...
<script type="text/javascript">

function Ok() {
document.getElementById("btnOK").click();
//cl();
return true;
}
function cl() {
window.parent.document.getElementById('txtDepartment').value = document.getElementById('Text1').value;
}
</script>


protected void btnOK_Click(object sender, EventArgs e)
{
...
ClientScript.RegisterStartupScript(GetType(), "method", "cl()", true);
}

关闭子窗口时调用Ok(),这个时候 我如果调用cl() 是可以正常执行,但是如果把 cl()放到 btnOK的click事件中执行,window.parent.document.getElementById('txtDepartment').value 就找不到对象了...
xingxingbanyue 2012-03-22
  • 打赏
  • 举报
回复
例如TextBox1是服务器端控件,若要在前台调用,则

document.getElementById("<%=this.TextBox1.ClientID%>").value
hwbox 2012-03-22
  • 打赏
  • 举报
回复
你直接调用了,页面还没加载完成。
改成在页面完成后调用
ClientScript.RegisterStartupScript(GetType(), "method", "<script>$(document).ready(function(){cl();});</script>");
朕赐你肥皂 2012-03-22
  • 打赏
  • 举报
回复
后台去获取ID,只要你控件不是位于一些数据绑定控件内
可以直接用ID去获取

获取父窗体得看你控件位置啊
懒得起名字 2012-03-22
  • 打赏
  • 举报
回复
在后台代码中 怎么去 父窗体的控件呢
?<%id.ClientID%
csdn的黄公子 2012-03-22
  • 打赏
  • 举报
回复
ls两位是对的
朕赐你肥皂 2012-03-22
  • 打赏
  • 举报
回复
服务器控件是无法用document.getElementById直接去获取

只能说通过document.getElementById(<%id.ClientID%>)去获取
rwm5366745 2012-03-22
  • 打赏
  • 举报
回复
txtDepartment控件外是否套用其他服务器控件

如果是 就改成下面的:

document.getElementById('<%=嵌套父控件ID.FindControl("txtDepartment").ClientID%>').value
懒得起名字 2012-03-22
  • 打赏
  • 举报
回复
function cl() {
window.parent.document.getElementById('txtDepartment').value = document.getElementById('Text1').value;
}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧