流箫 的 Blog

兴趣是最好的老师! ----Interest is the best teacher.
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

[转] javascript不同页面传值的改进版

Posted on 2009-09-15 22:15  给时光以生命18  阅读(348)  评论(0)    收藏  举报

改进点:支持同页面有多个文本框,可自动向不同的文本框传值。先看演示吧

其实原理也很简单。同样先通过getAttribute判断type属性,捕捉到按钮。然后在按钮onclick时把i通过url传入子页面。

代码如下:

<h2>input1</h2> 
<input type="text" /><input type="submit" /> 
<h2>input2</h2> 
<input type="text" /><input type="submit" /> 
<script type="text/javascript"><!-- 
var aInput = document.getElementsByTagName("input"); 
for (i = 0 ; i < aInput.length ; i++ ) 
{ 
( 
10  function (i){ 
11  if (aInput[i].getAttribute("type") == "submit") 
12  { 
13  aInput[i].onclick = function (){ 
14  window.open('b.html?'+i,'newwindow','height=100,width=400') 
15  } 
16  } 
17  } 
18  )(i) 
19  } 
20  // --></script>

子页面用slice方法对url进行切分。并使用window.opener方法捕捉到父页面的文本框,进行赋值。 一切就OK了

代码如下:

<h2>openWindow</h2> 
<input type="text" /><input type="submit" /> 
<script type="text/javascript"><!-- 
var aInput = document.getElementsByTagName("input"); 
for (i = 0 ; i < aInput.length ; i++ ) 
{ 
if (aInput[i].getAttribute("type") == "text") var textboxB = new Object(aInput[i]); 
if (aInput[i].getAttribute("type") == "submit") var btnB = new Object(aInput[i]); 
} 
10  btnB.onclick = function(){ 
11  var sTextValue = textboxB.value 
12  var aInput = window.opener.document.getElementsByTagName("input"); 
13  var sUrl = document.location; 
14  var sNo = sUrl.toString().slice(-1) 
15  window.opener.aInput[sNo-"1"].value = sTextValue 
16  window.close(); 
17  } 
18  // --></script>

还没明白的朋友看一下原理图就知道了