ShowModalDialog方法的参数传递研究

 
利用vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures]),我们可以打开一个模态窗口,该窗口的优点是限制用户只能对当前的页面进行操作,而对其父页面不能进行操作,常用于向导或者信息获取页面。
利用其中的vArguments我们可以在父页面和弹出的页面中进行参数的传递,参数可以为自定义的对象,也可以传递父页面中任何一个控件的引用,这使得我们可以很容易的来操作父页面中的各个元素,使得参数的传递变得非常容易。
1.     自定义对象参数传递
我们可以定义一个javascript对象,然后定义各种自定义属性的值,然后可以将此对象传递到子页面中。如:
父页面sender.htm源代码为:
< html >
 
< script >
function show()
{
     var person = new Object();
     person.myName=myName.value;
     person.age = age.value;
     person.country = country.value;
     window.showModalDialog("target.htm",person,"");
}
</ script >
 
< body >
    <table>
        <tr>
            <td>
                name:</td>
            <td>
                <input id="myName"></td>
        </tr>
        <tr>
            <td>
                age:</td>
            <td>
                <input id="age"></td>
        </tr>
        <tr>
            <td>
                country:</td>
            <td>
                <input id="country"></td>
        </tr>
    </table>
    <br>
    <input type="button" value="open" onclick="show()">
</ body >
</ html >
 
弹出的子页面target.htm的源代码为:
 
< html >
< body >
    <table>
        <tr>
            <td>
                name:</td>
            <td id="myName">
            </td>
        </tr>
        <tr>
            <td>
                age:</td>
            <td id="age">
            </td>
        </tr>
        <tr>
            <td>
                country:</td>
            <td id="country">
            </td>
        </tr>
    </table>
</ body >
 
< script >
    var person = window.dialogArguments;
    myName.innerText = person.myName;
    age.innerText = person.age;
    country.innerText = person.country;
</ script >
 
</ html >
 
上述的代码可以将父页面的信息封装成一个对象,然后将该对象传递给子页面。
 
 
2.     父页面元素传递
我们可以将父页面中元素对象的引用传递给子页面,通过该引用我们可以访问父页面中的该元素对象。
Sender.htm源代码:
 
< html >
 
< script >
function show()
{
     window.showModalDialog("target.htm",infoDiv,"");
}
</ script >
 
< body >
    <div id="infoDiv">
        <table id="infoTable">
            <tr>
                <td>
                    name:</td>
                <td>
                    <input id="myName"></td>
            </tr>
            <tr>
                <td>
                    age:</td>
                <td>
                    <input id="age"></td>
            </tr>
            <tr>
                <td>
                    country:</td>
                <td>
                    <input id="country"></td>
            </tr>
        </table>
    </div>
    <br>
    <input type="button" value="conveyElement" onclick="show()">
</ body >
</ html >
Target.htm源代码:
//其中利用元素对象的引用我们可以操纵父页面的元素对象的属性。
 
< html >
< body >
    <div id="childDiv">
    </div>
 
    <script>
     var infoDiv = window.dialogArguments;
    </script>
 
    <br>
    <input type="button" value="showInnerHtml" onclick='childDiv.innerHTML=infoDiv.innerHTML'>
    <br>
    <input type="button" value="changePColor" onclick='infoDiv.style.backgroundColor="lightgreen"'>
</ body >
</ html >
 
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值