• ベストアンサー

フレーム内で計算した結果を他フレームで表示

下記ページの様に、フレーム内で計算した結果を 他フレームで表示するにはどうしたら良いでしょうか? http://homepage2.nifty.com/WM/calorie/cal_ctl.htm

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

  • ベストアンサー
  • J_H
  • ベストアンサー率57% (11/19)
回答No.1

何が分からないか分からないので全部書きます。詳細は、コメントを参照してください。 画面は左右2面ですが、何面に分かれていても、関係ありません。 [構成] frame.html ・・・ フレーム用HTML left.html ・・・ 左に表示するHTML right.html ・・・ 右に表示するHTML --- frame.html --- <html> <head> </head> <frameset cols="*,*"> <frame src="left.html" name="leftWnd"><!-- [この名前は 右窓のスクリプトで用いる name="leftWnd"] //--> <frame src="right.html" name="rightWnd"> </frameset> </html> --- left.html --- <html> <head> <title></title> </head> <body> <form name="lfm"> <!- [フォームの名前を指定:この指定は必須 name="lfm"] //--> <input type="text" name="result" value="0"><!-- [name="result" も必須] //--> </form> </body> </html> --- right.html --- <html> <head> <title></title> <script type="text/javascript"><!-- [計算し、結果表示するスクリプト] --> function showTotal(){ var leftWnd = window.parent.leftWnd; // 左のウインドウ (左ウインドウ名 : leftWnd )[form.html で決めた名前 <frame src="" name="leftWnd">] var total = 0; // 右のウインドウで計算した結果 var rightFm = window.document.rfm; // 右のウインドウのフォーム (フォーム名 : rfm) if (leftWnd == null){ alert("結果を表示するウインドウがありません"); return; } for (var i = 0; i < rightFm.elements.length; i++){ // 右ウインドウのフォームのチェックボックスを検査 if (rightFm.elements[i].checked==true)    // チェックボックスでチェックがついてたら total += parseInt ( rightFm.elements[i].value ); // 加算 [ parseInt() は 文字を数字に変換 ] } leftWnd.document.lfm.result.value = total; // 左のウインドウのフォームにあるテキストボックスに計算した結果を設定 // [左ウインドウ](の)[ドキュメント](の)[フォーム](にある)[テキストボックス](の)[値] = [計算した結果] } </script> </head> <body> <form name="rfm"> <!-- [form の名前は rfm] //--> <input type="checkbox" value="200" onclick="showTotal()">200<br><!-- [value="***" の設定は必須 (以下同じ) ] //--> <input type="checkbox" value="100" onclick="showTotal()">100<br> <input type="checkbox" value="50" onclick="showTotal()">50<br> </form> </body> </html> 変なところで改行が入っている場合は修正してください。

gobei
質問者

お礼

JHさん 早急に丁寧なご回答ありがとうございました。目的の物が作成できそうです。 大変助かりました。

関連するQ&A