其实这个表格也是动态生成,所以记录的条数也是不确定的 现在我们这个表格中选中若干条记录 然后点击确定,就能把这几条记录,加到我们的父窗口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