setTimeOut 时间放长点, 可能控件加载的速度问题

解决方案 »

  1.   

    那应该怎么才不会出现找不到父页面的控件的错误呢?
    最奇怪的是别人的页面没这问题我的出现这样的问题了!
    如果不设setTimeOut的话,重新打开必定会出现js错误。
    后来在使用了alert("0")后就不会出现了!这是在<body>Onload里执行的!
      

  2.   

     <script language="javascript" type="text/javascript">
          setTimeout("InitData()", 300);
            
        function InitData()
        {
            
    //        var now = new Date();
    //        var time=now.getYear()+"/"+(now.getMonth()+1)+"/"+now.getDate();
    //        document.getElementById("labMDate").innerHTML=time.substring(2,time.length);
            
            
            document.getElementById("lblConfirmTime").innerHTML = window.opener.document.getElementById("txtSDate").value.replace("/","").replace("/","")+" 至 "+ window.opener.document.getElementById("txtSDate").value.replace("/","").replace("/","");
                      ……
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
    这是子页面的部分代码,就是InitData的第一句在重新打开时会报错。如果隔段时间再打开就不会报错(父页面不关闭)!
      

  3.   

     function InitData()
        {
            
    //        var now = new Date();
    //        var time=now.getYear()+"/"+(now.getMonth()+1)+"/"+now.getDate();
    //        document.getElementById("labMDate").innerHTML=time.substring(2,time.length);
            
            
            document.getElementById("lblConfirmTime").innerHTML = window.opener.document.getElementById("txtSDate").value.replace("/","").replace("/","")+" 至 "+ window.opener.document.getElementById("txtSDate").value.replace("/","").replace("/","");
            document.getElementById("labHouseNo").innerHTML=window.opener.document.getElementById("txtHouseNo").value;        var SourceID = window.opener.document.getElementById("txtRelatedNo").value;
            var OHomeNo = window.opener.document.getElementById("txtHouseNo").value;
            var ProNo = window.opener.document.getElementById("txtProNo").value;
            var ProName = window.opener.document.getElementById("txtProName").value;
            var ProVision = window.opener.document.getElementById("txtProVision").value;
            var ComNo = window.opener.document.getElementById("txtComNo").value;
            var ComName = window.opener.document.getElementById("txtComName").value;
            var ConfirmTimeS = window.opener.document.getElementById("txtSDate").value;
            var ConfirmTimeE = window.opener.document.getElementById("txtEDate").value;
                    
            var xml = WebForm1.GetDataSource(SourceID,OHomeNo,ProNo,ProName,ProVision,ComNo,ComName,ConfirmTimeS, '').value;        //获取值
           
            if(xml=="")
            {
    //            document.getElementById("labEmpDateInfo").style.display="";
                alert( '查無數據!' );
                window.close();
            }
            else
            {
                BindXMLTable( "divTab", xml);   //梆定Table
            }                   
        }            
    当没有数据后,再打开会报错!
      

  4.   

    setTimeout("InitData()", 300);
    换成document.body.onload = InitData;看看
      

  5.   

    这种弄过的。这不就是
    <body onload="InitData()">么?
    最开始是这样写的,会报找不到父页面错误的。
      

  6.   


     原因是:当点击打开子窗体的回发瞬间(我用的是asp.net的服务器控件),子窗体onload时正好在父窗体点击按钮与回发完成前,是找不着父页面的控件的,这时候父页面控件还未生成!
    改为input标签,然后把代码改成js的就行了。