電子書籍の厳選無料作品が豊富!

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

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

どなたか分かる方いらっしゃったら教えて下さい。

A 回答 (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でもアクセスできますが、他のフレームからサブウィンドウが開かれた時に対応できないので、このようにフレーム群の親までアクセスした方が良いでしょう。
(例えこのサブウィンドウが他のフレームから開かれなくても、別のサブウィンドウを開くことになった時に流用できますので、やはりこのようにします。)
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/07/04 10:05

すいません、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を付けてやればいいって事なのです。(^-^)
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/07/04 10:06

こんにちは。


子画面から
window.opener.top.[framename].document.[formname].[textname].value
で出来ますよ。

[framename]=フレームの名前
[formname]=フォームの名前
[textname]=INPUT TEXTの名前
    • good
    • 0
この回答へのお礼

試してみましたが、
「'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

documentが抜けてませんか?



・・・frames[2].document.formxxx...
    • good
    • 0
この回答へのお礼

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

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

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

以上、何かこのことからお分かりになったら、教えて下さい。

お礼日時:2001/07/03 15:30

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