-PR-
解決
済み

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

  • すぐに回答を!
  • 質問No.98933
  • 閲覧数1861
  • ありがとう数7
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 43% (13/30)

4つのフレームから成る画面より子画面を開き、
(2番目のフレームに子画面を呼び出すボタンが有ります)
子画面から親画面の2番目と3番目のフレームのデータを
操作したいのですが、上手くいきません。

window.top.opener.frames[1].formxxx.xxxx.value=xxxxx;
window.top.opener.frames[2].formxxx.xxxx.value=xxxxx;
で良いと思ったのですが。。。

どなたか分かる方いらっしゃったら教えて下さい。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.4
レベル12

ベストアンサー率 75% (398/526)

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

お礼率 43% (13/30)

できました!!
ありがとうございます。
投稿日時 - 2001-07-04 10:05:27
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1

documentが抜けてませんか? ・・・frames[2].document.formxxx... ...続きを読む
documentが抜けてませんか?

・・・frames[2].document.formxxx...
お礼コメント
m_miyachan

お礼率 43% (13/30)

documentを入れても変わりませんでした。

ちなみに
「window.top.opener.frames[1].document.formname.textname.value=XXX」
とすると
「'window.top.opener.frames.1.document'はオブジェクトではありません」
というエラーが発生してしまいます。

[]が化けてしまってるのでしょうか?
それとも単なる表示上の不具合なのでしょうか?

以上、何かこのことからお分かりになったら、教えて下さい。
投稿日時 - 2001-07-03 15:30:44


  • 回答No.2
レベル7

ベストアンサー率 57% (12/21)

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

[framename]=フレームの名前
[formname]=フォームの名前
[textname]=INPUT TEXTの名前
お礼コメント
m_miyachan

お礼率 43% (13/30)

試してみましたが、
「'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'はオブジェクトではありません」
というエラーが発生してしまいます。

このことから何かお分かりになるでしょうか?
投稿日時 - 2001-07-03 15:27:07
  • 回答No.3

すいません、2番目のフレームが呼び出し元だったんですね。 見逃していました。(^^;; それでしたら、2番目と3番目とでは、アクセスの仕方が違います。 まず、2番目のフレームは子画面の呼び出し元になりますので、 window.opener.document.formxxx.xxx.value=xxx; でアクセス可能です。 そして、3番目のフレームは、 window.opener.par ...続きを読む
すいません、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

お礼率 43% (13/30)

できました!!
ありがとうございます。
投稿日時 - 2001-07-04 10:06:20
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ