• ベストアンサー

子画面から親画面のデータを操作するには?

4つのフレームから成る画面より子画面を開き、 (2番目のフレームに子画面を呼び出すボタンが有ります) 子画面から親画面の2番目と3番目のフレームのデータを 操作したいのですが、上手くいきません。 window.top.opener.frames[1].formxxx.xxxx.value=xxxxx; window.top.opener.frames[2].formxxx.xxxx.value=xxxxx; で良いと思ったのですが。。。 どなたか分かる方いらっしゃったら教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.4

2番目のフレームのHTML構成を  <FORM name="f1">   <INPUT type="text" name="t1">  </FORM> とします。 このとき  window.opener.parent.frames[1].document.f1.t1.value = 値; でOKです。 (IE5.0、NN4.7で動作確認済み)  window.opener.parentで、4つのフレーム分けをしているHTMLへアクセスし、配列framesで各フレームにアクセスします。  そこから下は、各HTML内でのオブジェクトへのアクセスと同じです。  HIROYOさんの言うように2番目は実親なのでopnerでもアクセスできますが、他のフレームからサブウィンドウが開かれた時に対応できないので、このようにフレーム群の親までアクセスした方が良いでしょう。 (例えこのサブウィンドウが他のフレームから開かれなくても、別のサブウィンドウを開くことになった時に流用できますので、やはりこのようにします。)

m_miyachan
質問者

お礼

できました!! ありがとうございます。

その他の回答 (3)

noname#1785
noname#1785
回答No.3

すいません、2番目のフレームが呼び出し元だったんですね。 見逃していました。(^^;; それでしたら、2番目と3番目とでは、アクセスの仕方が違います。 まず、2番目のフレームは子画面の呼び出し元になりますので、 window.opener.document.formxxx.xxx.value=xxx; でアクセス可能です。 そして、3番目のフレームは、 window.opener.parent.frames[2].document.formxxx.xxx.value=xxx; でアクセスできます。 window.openerは、呼び出した元の画面へのアクセスになります。 2番目のフレームから子画面を呼び出しているのであれば、window.openerは2番目のフレームになります。 他のフレームにアクセスしたい場合は、window.openerの後に、該当フレームからアクセスしたい他のフレームへのアクセスを付け足してやればOKです。 つまり。(笑) 2番目のフレームから3番目のフレームにアクセスする場合、 parent.frames[2].document.formxxx.xxx.value=xxx; と書きますよね? それにwindow.openerを付けてやればいいって事なのです。(^-^)

m_miyachan
質問者

お礼

できました!! ありがとうございます。

  • President
  • ベストアンサー率57% (12/21)
回答No.2

こんにちは。 子画面から window.opener.top.[framename].document.[formname].[textname].value で出来ますよ。 [framename]=フレームの名前 [formname]=フォームの名前 [textname]=INPUT TEXTの名前

m_miyachan
質問者

お礼

試してみましたが、 「'window.opener.top'はオブジェクトではありません」 というエラーが発生してしまいます。 唯一エラーが発生しないのが 「window.top.opener.document.formname.textname.value=XXX」 という方法ですが、これでは3番目のフレームに値をセット することができません。 「window.top.opener.framename.document.formname.textname.value=XXX」 とすると 「'window.top.opener.framename.document'はオブジェクトではありません」 というエラーが発生してしまいます。 ちなみに 「window.top.opener.frames[1].document.formname.textname.value=XXX」 とすると 「'window.top.opener.frames.1.document'はオブジェクトではありません」 というエラーが発生してしまいます。 このことから何かお分かりになるでしょうか?

noname#1785
noname#1785
回答No.1

documentが抜けてませんか? ・・・frames[2].document.formxxx...

m_miyachan
質問者

お礼

documentを入れても変わりませんでした。 ちなみに 「window.top.opener.frames[1].document.formname.textname.value=XXX」 とすると 「'window.top.opener.frames.1.document'はオブジェクトではありません」 というエラーが発生してしまいます。 []が化けてしまってるのでしょうか? それとも単なる表示上の不具合なのでしょうか? 以上、何かこのことからお分かりになったら、教えて下さい。

関連するQ&A