- PR -

フレーム 値渡し フレーム上部がメニューの場合

投稿者投稿内容
でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2005-09-05 15:25
引用:

PiKaPiKaさんの書き込み (2005-09-05 13:33) より:

エラー: window.parent.frames[2].forms has no properties

スクリプト:window.parent.frames[2].forms[0].submit();



たつごろーさんと夏椰(かや)さんの示された書き方でOKになると思いますが、
これはおそらく存在しないフレームを指定してると思われます。
window.parentはBMenuとMainのフレーム分けを行う個所ではないですか?
frames[0]=BMenu
frames[1]=Main
になっているはずです。(.nameをalertで表示して確認してみてください)

Mainを指定したいのであれば、
window.parent.frames[1].forms[0].submit();
top.frames[2].forms[0].submit();
のどちらかに書き換えれば良いと思います。
PiKaPiKa
会議室デビュー日: 2005/09/05
投稿数: 19
投稿日時: 2005-09-05 15:38
指定番号は3つのフレームを使っているので合っていると思います。
あのスクリプトは登録ボタンのあるフォームに書けばいいのですよね?
きちんと値取り、移す事ができるのですが一瞬エラーが発生するのが気になります。
そのエラーの場所がsubmit()の所です。
でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2005-09-05 18:20
失礼しました。
試してから書くべきでしたね。

私の環境では、forms[0]の前にdocumentを追加すればOKでした。
window.parent.frames[2].document.forms[0].submit();

で、ちょっと整理させていただきたいのですが、
引用:
きちんと値取り、移す事ができるのですが


とありますが、当初の目的は達成されてるのですか?
そうであれば、このsubmitは余計な処理になると思います。

submitでエラーになっているのに、サーバに値が渡っているのはなぜ?
BMENU側でサーバに値を渡しているのかな?
というのが、私の疑問です。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-09-05 19:41
 ASP.NET ですよね?ASP と、ASP.NET は違います。これ、確実に、意識して使い分けてくださいね。

 で、BMenu で「登録」ボタンをクリックすると、どのような処理を実行するように記述していますか?具体的に説明してください。

例1:
1.「登録」ボタンをクリックする
2.ボタンの onclick イベントで submitMain 関数を呼ぶ
3.submitMain 関数で、Main フレームの hiddenSubmit ボタンをクリックする
 3.2.Main フレームに表示されている入力ページがサブミットされる
4.入力ページのサーバコードで、確認ページに Transfer する

例2:
1.「登録」ボタンをクリックする
2.Main フレームの confirm 関数を呼び出す
3.confirm 関数で、グローバル変数に、入力内容を待避する
 3.2.document.location で、確認ページを表示する
4.body.onload で、getValues 関数を呼び出す
 4.2.getValues 関数で、グローバル変数から入力内容を取り出す
 4.3.表示する


 相手に正しく自分の意図が伝わらないと、自分の得たい回答は得られません。
[投稿日時: 2005-09-05 11:58]の投稿まで、皆さん例1のように考えていらっしゃったと思います。質問を投げてから1時間も経ってから、例2のようなことをしていることが、他の人に伝わりました。大変な時間のロスだと思いますが、いかがですか?

自分が何をしたいのか、
何を調べた(参考にした)のか、
得たものをどう判断したのか、
どうなることを期待したのか、
実際はどうなったのか、
なぜそうなったと考えるか、
…というところを、もれなく記述すると、得たい回答を早く得ることができる傾向があります。


 それで、ASP.NET は、ポストバックという技法を使います。これは、Java-Struts などがポストフォワードという技法を使うのと対比されます。
 ポストフォワードでは、別のページへデータを送信し、別のページを表示します。
 対してポストバックでは、同じページへデータを送信し、同じページを表示します。
 これにより、Windows アプリケーションと同じように、イベントドリブンなコーディングがしやすいようになっています。
 このことは、イベント処理という考えでは便利な反面、一般に流通しているWeb アプリケーションの組み立て方とは相容れにくい傾向があります。
 特に、フレームや別ウインドウを使う場合、コーディングが難しくなる傾向があります。

 ASP.NET 初心者であれば、フレームを使わないように画面を設計する事を薦めます。

_________________
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-09-05 21:33
一通り目を通されることを薦めます。
http://www.atmarkit.co.jp/fdotnet/index/bbs/dir78.html
PiKaPiKa
会議室デビュー日: 2005/09/05
投稿数: 19
投稿日時: 2005-09-06 15:26
でっち6号さん へ
 document付けたらエラーも無く成功しました。ありがとうございました。
 
Jittaさん へ
 うまく説明できなくご迷惑をかけました。次からの投稿では気をつけます。

皆様、今回はありがとうございました。
 
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-09-07 13:42
引用:

ASP.NET 初心者であれば、フレームを使わないように画面を設計する事を薦めます。



例えば、
http://www.atmarkit.co.jp/
http://www.gotdotnet.com/japan/

フレーム分割していないけど、上部メニューと左メニューを持つWebアプリの例です。
3フレームに分割したら使いやすくなるでしょうか?

ASP.NET1.xでは、ユーザーコントロール等により、メニューを実装するといいでしょう。
ASP.NET2.0ならもっと簡単です。

スキルアップ/キャリアアップ(JOB@IT)