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();
         }  
    }
posted @ 2017-04-19 11:45  静爱飞阳  阅读(996)  评论(0)    收藏  举报