txt是本页面中TextBox控件的id,我想用下面这种形式改变它的值,但是有问题,错误提示是:'document.getElementById(...)'为空或不是对象。
Response.Write("<script language='Javascript'>document.getElementById('txt').value='我变了';</script>");下面这句是在父页面写的,也是想把子窗口中id为txt的控件属性改为我变了,这样也不行。
Response.Write("<script language='javascript'>var handle=window.open('...');handle.document.getElementById('txt').value='我变了';</script>");我只想用Response.Write这种形式,是哪里错了,大虾们帮帮忙啊~~或者你们有什么方法,在打开子窗口的时候父窗口可以传值给它,不要用地址传,因为我要传的字符串比较长,地址传值长度是有限制的,传不了那么多。

解决方案 »

  1.   

    Response.Write(" <script language='javascript'>var handle=window.open('...');handle.document.getElementById('txt').value='我变了'; " + "</script>");这样写试试~·
      

  2.   


    这个没跟我写的那个没区别吧~~是试了下也没区别,同样的错误'handle.document.getElementById(...)'为空或不是对象。 
      

  3.   

    handle.document访问之前要检查handle是否为空
    在用户的浏览器有弹出窗口屏蔽功能时window.open的返回值通常为空。
      

  4.   

    父窗口<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" > 
    <head> 
        <title>无标题页 </title> 
    </head> 
    <body> 
        <button onclick="javascript:var o = window.open('1.htm'); o.self.document.getElementById('aa').innerHTML = 'aaaa';"></button>
    </body> 
    </html>
    子窗口<div id="aa"></div>
      

  5.   

    Response.Write(" <script language='javascript'>var handle=window.open('...');handle.self.document.getElementById('txt').value='我变了'; " + " </script>");改成这样就成了~·handle.self.document.getElementById('txt').value='我变了'; 加个self
      

  6.   

    <button onclick="javascript:var o = window.open('xx.aspx'); o.self.document.getElementById('txt').value= 'aaaa';"></button>
    在页面上试过这个,不行Response.Write(" <script language='javascript'>var handle=window.open('...');handle.self.document.getElementById('txt').value='我变了'; " + " </script>");
    这个也不行~~ 
      

  7.   

    代码是这样的:
        protected void btnDetail_Click(object sender, EventArgs e)
        {
            String tdd = "<script language='javascript'>var handle=window.open('TenDayDetail.aspx','_blank','height=700,width=665,scrollbars=yes');if(handle!=null){handle.self.document.getElementById('txt').value='我变了';}" + "</script>";        Response.Write(tdd);
        }
      

  8.   

    if一开始是没加上去的子页面上的TextBox:<asp:TextBox ID="txt" runat="server"></asp:TextBox>
      

  9.   


    你别用asp的控件~·用HTML的试试呢~·
    <input type="text" id="txt" />
      

  10.   

    问题不在这个txt上面,还是这个错误'handle.self.document.getElementById(...)'为空或不是对象。 
      

  11.   


    因为它找不到txt~`或者找不到window.open这个对象就这两个可能~·
      

  12.   

    其实只要解决第一个问题就好了
    Response.Write(" <script language='Javascript'>document.getElementById('txt').value=window.opener.document.getElementById('').value; </script>"); window.opener.document.getElementById('').value;这个是可以在子窗口获得父窗口的值的,但是document.getElementById('txt').value可以获不了本窗口中的txt控件的值
      

  13.   

    document.getElementById('txt').value获不了本窗口中的txt控件的值
      

  14.   


    代码没有问题~·document.getElementById('txt').value就是这个找不到txt这个控件.你换成HTML的也不成吗?
      

  15.   

    Response.Write(" <script language='Javascript'>window.onload = function(){document.getElementById('txt').value=window.opener.document.getElementById('').value;} </script>");这样试试~·