App下載

Javascript怎么在兩個窗體之間傳值

猿友 2021-01-09 11:27:48 瀏覽數(shù) (2873)
反饋

眾所周知 window.open() 函數(shù)可以用來打開一個新窗口,那么如何在子窗體中向父窗體傳值呢,其實通過 window.opener 即可獲取父窗體的引用。

如我們新建窗體 FatherPage.htm:

XML-Code:

<script type="text/javascript">
function OpenChildWindow(){ 
window.open('ChildPage.htm'); }
</script>
<input type="text" id="txtInput" />
<input type="button" value="OpenChild" onclick="OpenChildWindow()" />

然后在 ChildPage.htm 中即可通過 window.opener 來訪問父窗體中的元素:


XML-Code:

<script type="text/javascript">
function SetValue(){ 
window.opener.document.getElementById('txtInput').value =document.getElementById('txtInput').value; 
window.close();}
</script>
<input type="text" id="txtInput" />
<input type="button" value="SetFather" onclick="SetValue()" />

其實在打開子窗體的同時,我們也可以對子窗體的元素進行賦值,因為 window.open 函數(shù)同樣會返回一個子窗體的引用,因此 FatherPage.htm 可以修改為:

XML-Code:

<script type="text/javascript">
function OpenChildWindow(){ 
var child = window.open('ChildPage.htm'); 
child.document.getElementById('txtInput').value =document.getElementById('txtInput').value; }
</script>
<input type="text" id="txtInput"/>
<input type="button" value="OpenChild" onclick="OpenChildWindow()" />

通過判斷子窗體的引用是否為空,我們還可以控制使其只能打開一個子窗體:

XML-Code:

<script type="text/javascript">
var childfunction OpenChildWindow(){ 
if(!child) child = window.open('ChildPage.htm'); 
child.document.getElementById('txtInput').value =document.getElementById('txtInput').value; }
</script>
<input type="text" id="txtInput" />
<input type="button" value="OpenChild" onclick="OpenChildWindow()" />

光這樣還不夠,當關閉子窗體時還必須對父窗體的child變量進行清空,否則打開子窗體后再關閉就無法再重新打開了:

XML-Code:

<body onunload="Unload()">
<script type="text/javascript">
function SetValue(){ 
window.opener.document.getElementById('txtInput').value =document.getElementById('txtInput').value; 
window.close();}
function Unload(){ 
window.opener.child=null;}
</script>
<input type="text" id="txtInput" />
<input type="button" value="SetFather" onclick="SetValue()" />
</body>

0 人點贊