dポイントプレゼントキャンペーン実施中!

JavaScriptのwindow.openで開いたページに値を渡したいのですが
複数項目ある場合はどうすればいいでしょうか?

▼下記のようなページです。
http://ausdruck.flier.jp/test/window3/oya.html

open1ボタンを押すとサブウィンドウのテキストフィールドにその値が入ります。
ひとつだけならできたのですがopen2,open3,open4,open5というふうにそれぞれ違う値を
サブウィンドウに渡す事ができません、if文などを使えばよろしいでしょうか?
どんな方法でもいいのでご存知の方ご教授お願い致します。

A 回答 (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; };
 }
 とか

ほかにもいろいろありそうですが、どのような方法が一番よいのかは実際の使い方と合せて判断するのがよろしいかと。

この回答への補足

下記のような方法で書き換えたのですがやはり意図した通りに動きませんでした。
やろうとしたい事は分かって頂けますでしょうか?
素人なのでよろしくお願い致します。

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;
}
}

補足日時:2011/10/01 04:38
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/10/01 04:37

window#open() の戻り値は 子画面の window オブジェクトです。



使い方は親画面のwindowオブジェクトと同様。

親画面の場合

window.document...

document...

と省略が可能なだけ。
    • good
    • 1

var win01 = [];


function dispw(i)
{
win01[i]=window.open("sub.html","","width=500,height=400");

}

window.open の戻り値が理解できてるようなのでJs側のみ変更方法を。

この回答への補足

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

補足日時:2011/09/30 00:59
    • good
    • 1
この回答へのお礼

sub.htmlに以下の記述をしてみましたのですがやはりうまくいきませんでした。
for文やインクリメントの使い方はあまりよく分からないのですが、こういう感じの方法でしょうか?

function set(){
for(i=0;i<5;i++){
document.getElementById("open1").value = window.opener.document.getElementById("open[i]").value;
}
}

お礼日時:2011/09/29 14:45

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