<script>
window.open("checked.htm","","");
</script>
<div id=mytable><table><tr><td></td><tr></table></div>checked.htm
<script>
function settable()
{
j=0;str="<table>";
for(i=0;i<document.all.mycheck.length;i++)
if(document.all.mycheck[i].checked)
{
str+="<tr><td><input name=mytext"+j+" value="+document.all.mycheck[i].value+"></td></tr>";
j++;
}
str+="</table>";
opener.document.all.mytable.innerHTML=str;
}
</script>
<input type=checkbox name=mycheck value=1>1
<input type=checkbox name=mycheck value=2>2
<input type=checkbox name=mycheck value=3>3
<input type=button onclick=settable()>

解决方案 »

  1.   

    1:向表中添加行:
    var tb= document.all("YourTableName");
    var isrow=tb.insertRow(tb.rows.length);
    2:向行中添加列:
    var MaxCell =你要添加的列数
    for(var i=0;i<MaxCell;i++)
         isrow.insertCell(i);
    3:得到父窗口的对象:
    window.opener.……  //这样就可以对他进行操作了
      

  2.   

    请教seabell(百合心) :
    父窗口的源码正确写法是什么?为什么我不能正常执行?
      

  3.   

    我的做法是把table用层套起来,再改变其中的innerHTML
    你把我的代码拷过去不能运行吗?请说清楚些
      

  4.   

    我把代码拷过去仍不行,主要在子窗口提交时报错。说是“opener.document.all.mytable”不是对象。
      

  5.   

    <script>
    window.open("checked.htm","","");
    </script>
    <div id=mytable><table><tr><td></td><tr></table></div>
    这一段是父窗口代码。下面是子窗口代码。
    我刚试了没问题
      

  6.   

    不知道是不是5.5以下不支持innerHTML
      

  7.   

    不知道是不是5.5以下不支持innerHTML
      

  8.   

    好象是IE5.0不能支持‘opener’和‘parent’对象,但在IE5.5以上的版本运行正常,不知道有没有更好的解决办法?
      

  9.   

    我在父窗口打开子窗口的代码如下:<input type="button" name="select" id="select" value="选择" onClick="var a=window.showModalDialog('test.htm','Calendar','dialogWidth:520px;dialogHeight:450px;');>子窗口怎么才能实现返回父窗口,并自动产生行?
      

  10.   

    main.htm
    -------------------------------------------------------------------
    <BODY onfocus="showText()">
    <script language=javascript>
    function setCookie(s,v)
    {
     var expires = new Date();
     expires.setTime(expires.getTime() +  365*24*60*60*1000);
     document.cookie= s + "=" + v + ";expries=" + expires.toGMTString();
    }function getCookie(s)
    {
      var startPoint = 0;
      var endPoint = 0;
      var isFound = false;
      var cookieStr = document.cookie;
      var i = 0;  s = s + "=";
      while (i<cookieStr.length) {
         startPoint = i;
         endPoint = startPoint + s.length;     if (cookieStr.substring(startPoint,endPoint) == s) {
            isFound = true;
            break;
            }
         i++;
         }  if (isFound == true) {
         startPoint = endPoint;
         endPoint = cookieStr.indexOf(";",startPoint);
         if(endPoint < startPoint) endPoint = cookieStr.length;
         return unescape(cookieStr.substring(startPoint,endPoint));
         }
    }function showText() {
    if(!getCookie("tValue")) document.all.theText.value="";
    else document.all.theText.value=(getCookie("tValue"));
    }
    </script>
    <textarea cols=30 rows=10 id=theText></textarea>
    <input type="button" name="select" id="select" value="选择" onClick="var a=window.showModalDialog('test.htm','Calendar','dialogWidth:520px;dialogHeight:450px;');">
    </BODY>test.htm
    ----------------------------------------------------------------
    <BODY>
    <script>
    function setCookie(s,v)
    {
     var expires = new Date();
     expires.setTime(expires.getTime() +  365*24*60*60*1000);
     document.cookie= s + "=" + v + ";expries=" + expires.toGMTString();
    }function getCookie(s)
    {
      var startPoint = 0;
      var endPoint = 0;
      var isFound = false;
      var cookieStr = document.cookie;
      var i = 0;  s = s + "=";
      while (i<cookieStr.length) {
         startPoint = i;
         endPoint = startPoint + s.length;     if (cookieStr.substring(startPoint,endPoint) == s) {
            isFound = true;
            break;
            }
         i++;
         }  if (isFound == true) {
         startPoint = endPoint;
         endPoint = cookieStr.indexOf(";",startPoint);
         if(endPoint < startPoint) endPoint = cookieStr.length;
         return unescape(cookieStr.substring(startPoint,endPoint));
         }
    }
    function showCheck()
    {
    var s= "";
    for(i=0;i<document.all.mycheck.length;i++)
      if(document.all.mycheck[i].checked)
       s += document.all.mycheck[i].value + "\n";
       setCookie("tValue",s);}
    </script>
    <input type=checkbox name=mycheck value=aaaaa>aaaaa
    <input type=checkbox name=mycheck value=bbbbb>bbbbb
    <input type=checkbox name=mycheck value=ccccc>ccccc
    <br><br>
    <button onclick="showCheck()">确  定</button>&nbsp;&nbsp;<button onclick="window.close()">关 闭</button>
    </BODY>
      

  11.   

    lanbor(兰波) :
    首先感谢你的指教。但我想通过子窗口被选中的n个选项提交后在父窗口动态产生n行的输入框。
      

  12.   

    我不是很清楚你的:父窗口动态产生n行的输入框的确切含义,是说的输入框的高度?那你根据选了多少选项,让theText.rows=几就可以了呀。
      

  13.   

    哦。那就改成这样吧:main.html
    ---------------------------------------------------------------
    <BODY onfocus="showText()">
    <script language=javascript>
    function setCookie(s,v)
    {
     var expires = new Date();
     expires.setTime(expires.getTime() +  365*24*60*60*1000);
     document.cookie= s + "=" + v + ";expries=" + expires.toGMTString();
    }function getCookie(s)
    {
      var startPoint = 0;
      var endPoint = 0;
      var isFound = false;
      var cookieStr = document.cookie;
      var i = 0;  s = s + "=";
      while (i<cookieStr.length) {
         startPoint = i;
         endPoint = startPoint + s.length;     if (cookieStr.substring(startPoint,endPoint) == s) {
            isFound = true;
            break;
            }
         i++;
         }  if (isFound == true) {
         startPoint = endPoint;
         endPoint = cookieStr.indexOf(";",startPoint);
         if(endPoint < startPoint) endPoint = cookieStr.length;
         return unescape(cookieStr.substring(startPoint,endPoint));
         }
    }function showText()
    {
       mydiv.innerHTML = getCookie("tValue");
    }</script>
    <div id=mydiv></div>
    <input type="button" name="select" id="select" value="选择" onClick="var a=window.showModalDialog('test.htm','Calendar','dialogWidth:520px;dialogHeight:450px;');">
    </BODY>test.htm
    ---------------------------------------------------------------
    <BODY>
    <script>
    function setCookie(s,v)
    {
     var expires = new Date();
     expires.setTime(expires.getTime() +  365*24*60*60*1000);
     document.cookie= s + "=" + v + ";expries=" + expires.toGMTString();
    }function getCookie(s)
    {
      var startPoint = 0;
      var endPoint = 0;
      var isFound = false;
      var cookieStr = document.cookie;
      var i = 0;  s = s + "=";
      while (i<cookieStr.length) {
         startPoint = i;
         endPoint = startPoint + s.length;     if (cookieStr.substring(startPoint,endPoint) == s) {
            isFound = true;
            break;
            }
         i++;
         }  if (isFound == true) {
         startPoint = endPoint;
         endPoint = cookieStr.indexOf(";",startPoint);
         if(endPoint < startPoint) endPoint = cookieStr.length;
         return unescape(cookieStr.substring(startPoint,endPoint));
         }
    }
    function showCheck()
    {
    var h = "";
    for(i=0;i<document.all.mycheck.length;i++)
      if(document.all.mycheck[i].checked)
        h += '<input value=' + document.all.mycheck[i].value + '><br>';setCookie("tValue",h);
    }
    </script>
    <input type=checkbox name=mycheck value=aaaaa>aaaaa
    <input type=checkbox name=mycheck value=bbbbb>bbbbb
    <input type=checkbox name=mycheck value=ccccc>ccccc
    <br><br>
    <button onclick="showCheck()">确  定</button>&nbsp;&nbsp;<button onclick="window.close()">关 闭</button>
    </BODY>
      

  14.   

    lanbor(兰波) 兄:
    请指教一下上述代码的原理,为什么产生列表后,没有随即产生输入框的代码,要是没有的话,我在父窗口提交时,就无法向数据库传递参数的值了。
      

  15.   

    不会呀。动态产生的代码是可以做提交用的。虽然你在ie查看源文件里看不到。
    做一个实验:
    <body>
    <form onsubmit="alert(myText.value);event.returnValue=false">
    <div id=myDiv></div>
    </form><script>
     myDiv.innerHTML = "<input id=myText><br><input type=submit value=submit>";
    </script>
    </body>至于我给你的代码。你还要改一下,让产生的输入框符合你的要求,比如name分别是什么,value分别是什么。