JS子窗口调用父窗口的方法

有两种情况:

一,框架(iframe)形式,这时用到是window.parent,详情如下:(在同一页面打开)

、父窗口调用子窗口:myFrame.window.functionName();
、子窗品调用父窗口:parent.functionName(); 

1,1.html代表的是父窗口

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>父页面</title>
</head>
<body>
<form name="form1" id="form1"> 
   <input type="text" name="username" id="username" /> 
</form> 
<span style="color:#ff0000;"><strong><iframe src="2.html" width="100%"></strong></span>
</body>
</html>
 


2,2.html代表的子窗口

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>子页面</title>
<script type="text/javascript">
 function changeValue(val){
  <strong><span style="color:#ff0000;">var _parentWin = window.parent ; </span></strong> 
  _parentWin.form1.username.value = val ;
 }
</script>
</head>
<body>
<input type="file" name="filename" οnchange="changeValue(this.value);" />
</body>
</html>


这时在子窗口(iframe窗口)所做的改变,会改变父窗口中username的值。

 

二,新开窗口形式,这时用到是window.opener,详情如下:(在不同页面打开)

1,1.html代表的是父窗口

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>父页面</title>
</head>
<body>
<form name="form1" id="form1"> 
   <input type="text" name="username" id="username" <strong><span style="color:#ff0000;">οnclick="window.open('2.html');" </span></strong>/> 
</form> 
<!-- <iframe src="2.html" width="100%"></iframe> -->
</body>
</html>


 

2,2.html代表的是子窗口

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>子页面</title>
<script type="text/javascript">
 function changeValue(val){
 <span style="color:#ff0000;"> var _parentWin =  window.opener ;  </span>
  _parentWin.form1.username.value = val ;
 }
</script>
</head>
<body>
<input type="file" name="filename" οnchange="changeValue(this.value);" />
</body>
</html>


这时,在新开的子窗口页面中,选择浏览按钮选择文件后,父窗口的username中值会是你选择的文件地址,这里我们可以根据实际需要,进行改变,比如在上传成功后,将生成的文件名放到父窗口的username字段中,以便插入数据库等等。

 

上面两种情况都是子窗口改变父窗口的内容,其实和子窗口调用父窗口的元素是一样的道理,这里我以window.open新开窗口的形式,让子窗口调用父窗口的元素值。

1,1.html父窗口 代码如下

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>父页面</title>
</head>
<body>
<form name="form1" id="form1"> 
   <input type="text" name="username" id="username" value="胡宇轩" οnclick="window.open('2.html');" /> 
</form> 
<!-- <iframe src="2.html" width="100%"></iframe> -->
</body>
</html>


 

2,2.html子窗口,代码如下

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>子页面</title>
<script type="text/javascript">
 function changeValue(){
  var _parentWin =  window.opener ; 
  var obj = document.getElementByIdx_x("myname");
  obj.value = _parentWin.form1.username.value;
 }
</script>
</head>
<body οnlοad="changeValue()">
<input type="text" name="myname" id="myname" />
</body>
</html>


当新开窗口时,子窗口加载时,子窗口的myname值会调用父窗口中的username值“胡宇轩”,这只是个例子,具体也根据实际情况调用父窗口的其他元素内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值