違うフレームからグローバル変数を参照するには?

[上に] [前に] [次に]
眠兎 [E-Mail] 1999/11/11(木) 13:57:03
質問です。

グローバル変数をまとめたjsファイルを用意して、フレーム1
でこの中のある変数を変更します。
その値をフレーム2で参照しようとしたのですが、デフォルト
しか参照してくれません。
これって同フレーム内でしか変更した値を参照できないと
いうことですか?

あと、JavaScriptでCGIから送られてきたデータを取得
することはできますか?

Nobu3 [E-Mail] [HomePage] 1999/11/11(木) 18:42:47
対象フレームが、参照したいフレームからみて「parent.jsframe」のとき、
対象フレームの変数は、
「parent.jsframe.変数名」
で、参照できます。
変数もオブジェクトなので。

CGIで作成するページなら、スクリプトを直に書いてしまえば良いと思いますが・・・。

無責任官庁 1999/11/15(月) 16:13:59
> その値をフレーム2で参照しようとしたのですが、デフォルト
> しか参照してくれません。
> これって同フレーム内でしか変更した値を参照できないと
> いうことですか?

同フレーム内という訳では無く、プログラムが終了しているかどうか、
だと思います。
一旦プログラムが終了して待機状態になったあとは、
変数などは全てクリアされてしまいます。

なので、通常、他の関数や他のフレームに値を渡したい場合で、
処理が一旦中断する場合(ユーザーのクリック待ちとかね)は、

<input type=hidden name=work value="">

というようなダミーのフォームを作成し、
そこに値をセットして渡します。

そういうコトですよね?

眠兎 1999/11/16(火) 19:40:03
実際やりたいこととしては次の通りです。
めちゃくちゃ簡単に書きますが、

*****Global.js****************
var gIndex="index.html";
*****Script.js****************
function Test(CF){
gIndex=CF;
}
*****frame1*******************
・・・略・・・
<A HREF="JavaScript:Test("test1.html")>
<IMG SRC="+++.gif"></A>
<A HREF="JavaScript:Test("test2.html")>
<IMG SRC="@@@.gif"></A>

1.frame1でボタンが押されたら、Test関数で
Global.js内のgIndex変数を書き換える。
2. frame2でこの書き換えられた後のgIndex変数
を参照したい

としたいのですが、frame2でgIndexを参照すると
gIndex=index.htmlが参照されてしまうわけです。

官庁さんの隠しフィールドを使ったやつって
別のフォームに送ることができます?
また、それをCGIを使うことなく取得することは
可能でしょうか?

無責任官庁 1999/11/16(火) 23:28:32
---フレーム設定---
<FRAMESET COLS="50%,50%" BORDER=1>
<FRAME SRC="testframe1.html" NAME="FRAME1">
<FRAME SRC="testframe2.html" NAME="FRAME2">
</FRAMESET>

---FRAME1---
<FORM NAME=FORM1>
<INPUT TYPE=text NAME=hensuu VALUE="">
</FORM>
<A HREF="#" onClick="document.FORM1.hensuu.value='test1.html';return false;">
あああ</A>
<A HREF="#" onClick="document.FORM1.hensuu.value='test2.html';return false;">
いいい</A>

---FRAME2---
<FORM NAME=FORM2>
<INPUT TYPE=button value="値を取得"
onClick="document.FORM2.KEKKA.value=window.parent.FRAME1.FORM1.hensuu.value;">
<INPUT TYPE=text NAME=KEKKA>
</FORM>

こんな感じ。とりあえずこれを動かしてみてください。
これは分かりやすくする為に type=text ですけど、
type=hidden でも同じです。

眠兎 1999/11/17(水) 14:15:52
[[解決]]
Nobu3,官庁さんありがとうございました。
教えていただいたことを利用して、自分でもいろんな
場合に使えるように考えていきたいと思います。
Cしかやったことがないので、オブジェクトに
どうしてもまだ慣れないです(^^;

それではまた分からないことがあったら質問しますので
よろしくお願いします。
ありがとうございました!

[上に] [前に] [次に]