プロが教えるわが家の防犯対策術!

javascriptでサブウィンドウを開き、親ページにあるフォームの値をサブウィンドウのテキストフィールドに渡す方法で複数項目がある場合、下記URLのようにラジオボタンならうまくいったのですが
ラジオボタンなしで、ボタンを押すと直接その値をサブウィンドウに渡す方法はないでしょうか?

複数項目ある値をサブウィンドウに渡す(ラジオボタン)
http://ausdruck.flier.jp/test/window11/oya_11.html

上記URLの方法ならうまくいったのですが下記URLのようにボタンを押してその値を
直接サブウィンドウに渡したいとおもっています。

http://ausdruck.flier.jp/test/window3/oya.html
▲こちらのイメージで渡したいのですが、複数項目があるとうまくいきません。

A 回答 (3件)

#2です。



>親の関数getData()を呼び出すにはどういう方法がありますでしょうか?
ご質問のサンプルでご提示の方法と同じです。
 alert( window.opener.getData() );
とか。


考えてみたら、値を渡さなくても要素を返しちゃった方が便利かも…
ということで、親側が
var Data = {
 node : null,
 get : function(){ return this.node },
 set : function(evt){
  var t = evt.target || evt.srcElement;
  if(t.nodeName != "INPUT") return;
  this.node = t;
  window.open("hoge.html","");
 }
};
(↑少し記述法を変えてます。変数が少なくて済むかと…)

子側が
 alert( window.opener.Data.get().value );
みたいなのでも良いのかも知れません。
(実際の使い方がわからないのでよくわかりませんが)
    • good
    • 0
この回答へのお礼

できました!!
こんなにシンプルで安定感のある方法があったんですね!感動です、ほんとにありがとうございました。感謝です!

お礼日時:2011/10/04 23:57

http://oshiete.goo.ne.jp/qa/7041449.html
のほうが締め切られちゃったので、もうよろしいのかと思ったのですが…


単純にinuputのvalue値を渡せればよいと解釈して、以下で可能かと思います。
(前回、回答の3)の方法になっています。)

開いたhoge.html側から親の関数getData()を呼び出すことで値を取得可能です。
(変数dataにvalue値を覚えておいて、呼び出されたらそれを返しているだけ)

(全角空白は半角に)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>sample</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/javascript">
<!--
var getData;
var setData = (function(){
 var data = "";
 getData = function(){ return data; };
 return function(evt){
  var t = evt.target || evt.srcElement;
  if(t.nodeName != "INPUT") return;
  data = t.value;
  window.open("hoge.html","");
 };
})();
//-->
</script>
</head>
<body>

<div onclick="setData(event)">
<input type="button" value="value1">
<input type="button" value="value2">
<input type="button" value="value3">
<input type="button" value="value4">
<input type="button" value="value5">
</div>

</body>
</html>

*ちなみにNo1様の回答は、前回回答の2)の考え方とほぼ同じです。
(要は、渡す値を一時記憶しておく場所をどこに設定するかの違い。)
    • good
    • 0
この回答へのお礼

ありがとうございます、hoge.html側から親の関数getData()を呼び出すにはどういう方法がありますでしょうか?基本がなさすぎるためかそれでも理解できません、サンプルなどあれば助かります。

お礼日時:2011/10/04 00:20

たとえば、oya.htmlにsub.htmlで値を取得するための項目(hidden)を用意して 


押されたボタンに応じてdispw実行時に値を設定するようにすればいいのではないでしょうか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!