• 締切済み

javascriptで開いたウィンドウに値を渡す

JavaScriptのwindow.openで開いたページに値を渡したいのですが 複数項目ある場合はどうすればいいでしょうか? ▼下記のようなページです。 http://ausdruck.flier.jp/test/window3/oya.html open1ボタンを押すとサブウィンドウのテキストフィールドにその値が入ります。 ひとつだけならできたのですがopen2,open3,open4,open5というふうにそれぞれ違う値を サブウィンドウに渡す事ができません、if文などを使えばよろしいでしょうか? どんな方法でもいいのでご存知の方ご教授お願い致します。

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

>というふうにそれぞれ違う値をサブウィンドウに渡す事ができません 指定する値が固定の値なのか、可変の値なのかで若干変わるのかもしれませんが、方法はいろいろあるかと思います。 簡単に思いつくのは以下のような方法でしょうか。 1)uriのクエリ部を利用して値を渡す  子ウィンドウを開く際にuriのserch部に渡したい値をセットして、  子ウィンドウ側のスクリプトでそれを取得する。  window.open("○○○.html?parameter="+ parameter, ・・・とか 2)渡したい値を親HTMLのどこかにセットしておいて、   子ウィンドウからその値を読みに行く。   (ご提示のサンプルとほぼ同じ方法です)  親ウィンドウの要素はなんでも良いが、例えば<input>要素なら  <input type="text" id="paramaeter" type="hidden" value="">  とか。 3)親ウィンドウ側に値を返す関数を用意し、子側から呼び出して  値を取得する。( 2)の記憶場所を要素でなく関数にした形 )  var func;  function defFunc(parameter){   func = function(){ return parameter; };  }  とか ほかにもいろいろありそうですが、どのような方法が一番よいのかは実際の使い方と合せて判断するのがよろしいかと。

pc_web
質問者

お礼

ありがとうございます、参考にしてみましたがやはり無理でした。

pc_web
質問者

補足

下記のような方法で書き換えたのですがやはり意図した通りに動きませんでした。 やろうとしたい事は分かって頂けますでしょうか? 素人なのでよろしくお願い致します。 function set(){ var open1 = window.opener.document.getElementById('open1').value; var open2 = window.opener.document.getElementById('open2').value; var open3 = window.opener.document.getElementById('open3').value; var open4 = window.opener.document.getElementById('open4').value; var open5 = window.opener.document.getElementById('open5').value; if (open1 == 'open1') { document.getElementById("open1").value = window.opener.document.getElementById("open1").value; } else if(open2 == 'open2') { document.getElementById("open1").value = window.opener.document.getElementById("open2").value; } else if(open3 == 'open3') { document.getElementById("open1").value = window.opener.document.getElementById("open3").value; } else if(open4 == 'open4') { document.getElementById("open1").value = window.opener.document.getElementById("open4").value; } else if(open5 == 'open5') { document.getElementById("open1").value = window.opener.document.getElementById("open5").value; } }

noname#147388
noname#147388
回答No.2

window#open() の戻り値は 子画面の window オブジェクトです。 使い方は親画面のwindowオブジェクトと同様。 親画面の場合 window.document... は document... と省略が可能なだけ。

noname#147388
noname#147388
回答No.1

var win01 = []; function dispw(i) { win01[i]=window.open("sub.html","","width=500,height=400"); } window.open の戻り値が理解できてるようなのでJs側のみ変更方法を。

pc_web
質問者

お礼

sub.htmlに以下の記述をしてみましたのですがやはりうまくいきませんでした。 for文やインクリメントの使い方はあまりよく分からないのですが、こういう感じの方法でしょうか? function set(){ for(i=0;i<5;i++){ document.getElementById("open1").value = window.opener.document.getElementById("open[i]").value; } }

pc_web
質問者

補足

いろいろ試してみましたが解決できません、どうかよろしくお願い致します。

関連するQ&A