如何将子窗口的值传到父窗口去调用

来源:互联网 发布:小马网络免费空间 编辑:程序博客网 时间:2024/06/06 12:15
这是我当初的问题"现在我想实现这样一个功能现在父窗口有一个select控件,同时有一个"增加"按钮,点击按钮,弹出一个窗口,这时弹出窗口也有一个table,同时有一个"确认"按钮table中有若干项,每一行对应一条记录,并有一个checkbox,选中这个checkbox就等于选中了这条记录,代码大致这样<table>  <tr>   <td><input type="checkbox" name="recode" value="<%=recode1%"></input>nbsp$; nbsp$; nbsp$; <%=recode1%>></td>  </tr></table>

其实这个表格也是动态生成,所以记录的条数也是不确定的现在我们这个表格中选中若干条记录然后点击确定,就能把这几条记录,加到我们的父窗口select控件中注意不能用jsp这类服务器端语言,就用javascipt该怎么实现啊,有些头疼啊关键是如何动态增加select的option??大虾帮忙啊"

首先取得父窗口可以用"window.opener"现在思路是这样的在子窗口获取子窗口的控件对象,然后将其作为参数传入父窗口中我干脆把code贴过来,再加上注释吧

<script language="javascript">function apply()    {         //获取子窗口中checkbox控件对象数组,注意获取对象数组的方法         var chkGroup=document.getElementsByName("chkGroup");        //调用父窗口的对应方法,调用模式是window.opener.方法(参数)         window.opener.addSel(chkGroup);        //关闭当前窗口         window.close();    }</script >这是在子窗口中的关键code

 

<script language="javascript">      function addSel(chkGroup)    {       if(null==chkGroup)           {            alert("当前没有组可以增加");           }         else         {             var selCtrl = document.getElementById("belongGroup");                          var len= chkGroup.length;             var opt= null;             var chk=null;                                      for(i=0;i<len;i++)             {                                if(chkGroup.checked)                 {                   chk = chkGroup;   // opt =  new Option(chk.name,chk.value,false,false);                    opt =  document.createElement('option');                  opt.value=chk.value;                  opt.text=chk.name;                  selCtrl.add(opt,selCtrl.length);                                }             }         }        }</script >这是在父窗口中的关键code

大家可以注意一下,创建select控件的option有两种方法一种是直接当做对象,new 出来例如你可以opt =  new Option(chk.name,chk.value,false,false);第二种是调用document的方法来创建 opt =  document.createElement('option'); 当然这样就必须在多加上几行赋值的代码.例如opt.value=chk.value;  opt.text=chk.name;而select控件增加option的方法就是 selCtrl.add(Option对象,索引);之前在网上有另外一个方法selCtrl.appendChild(Option对象);这个方法不好使,不知为什么,Option对象确实是附加上去,但是值却是空的即在select控件中点击,确实有对应option存在,看到的却是空白

而且另外一个地方,我最初是想把对父窗口select控件的增加的那段code也放在子窗口中但是也就是不好使,不理解这是为何所以后来只好把checkbox的控件数值作为参数传递给父窗口的方法

 

几个注意的地方,写javascript的时候常常会不自觉引入java的思维例如变量类型,例如String str, int x之类,在方法定义的时候也会是function method(var xx){}这样的东东记住,方法声明一定function method(xx){} ,变量可以是var str,var xx

原创粉丝点击