js模式窗口向父窗口传值
我使用的模式窗口是window.showModalDialog的方式打开的,通过百度,我发现有以下两个获取父类值的方式。
1.IE浏览器
window.dialogArguments.document.getElementById
2.其他
window.opener.document.getElementById
然而是这么写的,不过获取的值始终是null,折腾了几个小时,理了以下思路,感觉有点不对劲,没有传值怎么会有取值呢
解决方法如下,在父类打开模式窗口的js为方法赋变量,同时子窗口返回变量
var s=showModalDialog(url,’名称’,’样式’);
在子窗口js中写入
window.returnValue=要传的值或者变量
这时候s=window.returnValue,在父类js中直接获取dom元素赋值即可
另外还有一种传值方法,用到开头所述的传值方式,这里我就直接贴代码了
function returnValue(flag){ //获取checkbox选中行的某几列并拼接字符串 var all =document.getElementsByName("master_key"); var flag_orders=""; var flag_pk=""; var orders=[]; var pks=[]; for(var i=0;i<all.length;i++){ if(all[i].checked){ var row =all[i].parentElement.parentElement; orders.push(row.cells[2].children[1].innerHTML); pks.push(row.cells[7].children[1].innerHTML); } } order="("+orders+"),"; pk="("+pks+")"; parentValues=order+pk; flag=parentValues; //给模式窗口赋值,通过js传参返回父窗口的元素 if (window.ActiveXObject) //IE浏览器 { var myObj = window.dialogArguments; //alert(myObj); myObj.value = flag; var ss=flag.split("),("); //alert(flag); window.dialogArguments.document.getElementById("text37010-").value=ss[0].substring(1,ss[0].length); window.dialogArguments.document.getElementById("text62425-").value=ss[1].substring(0,ss[1].length-1); window.close(); } else{ window.opener.document.getElementById("text62425-").value=flag; //self.close(); window.close(); } }
纷乱的思绪总会使人烦躁,倒不如先做点什么

浙公网安备 33010602011771号