• 締切済み

子ウィンドウへ引数の受け渡し

Javascriptを使った計算式を作成しております。 計算式のほうは完成しており、ソース内の「A= 」~「F= 」の部分に数値を直接入力し実行すると、 答えが表示される状態になっています。 最終的に6つのTEXTBOXに数値を入力し、送信ボタンを押すと子ウィンドウが開き、 その数値を引数とした計算の答えが表示されるプログラムを作成したいと思っていますが、 計算式を作成したところで、力尽きてしまいました。 どうか、プログラムを完成させるお力添えをお願いします。

みんなの回答

  • m035
  • ベストアンサー率44% (38/86)
回答No.4

あなたのソースの場合は 変数=document.myForm.テキストボックス名.value; とすればいいです。 例えば <form name="myForm"> <input type="text" size="15" name="myFormYen"> </form> に入力された値を変数(仮にYen)に代入したいのであれば、 Yen=document.myForm.myFormYen.value; で変数YenにテキストボックスmyFormYenの値が代入されます。 この方法でfunction内に6つ分代入するように書けばいいと思います。 それと、 <script language="JavaScript"><!-- setInterval("myFunc()",1000); // --></script> </FORM> は</FORM>がいらないと思います。 料金<br> <input type="text" size="15" name="myFormYen"> </form> で先に<form name="myForm">~</form>になっていますから。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

var w=window.open(子ウィンドウURL,タイトル,属性); w.document.myForm.myFormYen.value=計算結果; てな感じでいけると思います。 他ドメインのページの(でアクセス違反になる)場合は result.html?yen=1050 みたいな形で渡してやって、hrefの解析を開いたページの方でしてやるというようなやり方もあります。

  • m035
  • ベストアンサー率44% (38/86)
回答No.2

おせっかいですが導入の仕方を書きたいと思います。 >1氏のソースを計算終了後の部分に追加すればいいんですよ。 例(A~Fをすべて足した答えを別ウィンドウに表示) <html> <head> <script type="text/javascript"> <!-- function inc(){ var ans=0; for(i=0;i<document.fo.elements.length-1;i++){ ans+=eval(document.fo.elements[i].value); }//ここまでが計算部分// var w=window.open("","結果","status=no,toolbar=no,menubar=no,width=300,height=150"); w.document.write("結果:<br>A+B+C+D+E+F="+ans); w.document.close(); //>1氏の方法で別ウィンドウに書き出し// } //--> </script> </head> <body> <form name="fo"> A<input type="text" size=5>+<br> B<input type="text" size=5>+<br> C<input type="text" size=5>+<br> D<input type="text" size=5>+<br> E<input type="text" size=5>+<br> F<input type="text" size=5>= <input type="button" value="結果" onclick="inc()"> </form> </body> </html> このように計算用のfunctionの最後の部分に >1氏のソースを(好みでアレンジしつつ)足せばいいんです。 w.document.write("結果の式とかなんとか書き込む");  ↓変更 w.document.write("結果:<br>A+B+C+D+E+F="+ans); 上記のようにw.document.write(結果入り変数名); にすれば結果を別ウィンドウに書き出せます。

aoikokoro
質問者

お礼

質問の仕方がわるく申し訳ありません。 子ウィンドウに表示させる方法がわからないのではなく 数値を取り出すことができずに困っています。 初めてのプログラミングのため、スマートではないソースを載せることに抵抗があったのですが、 見ていただいたほうが早いと思い、私の作成したソースを補足します。 最初に指定している6つの数値をtextboxに入力したものに変更させる方法を知りたいです。

aoikokoro
質問者

補足

<HTML> <HEAD> <script language="JavaScript"><!-- inh = 19; inm = 0; overm = 15; overc = 105; pach = 3; pacc = 1000; function myFunc(){ myD = new Date(); myHours = myD.getHours(); myMinutes = myD.getMinutes(); mySeconds = myD.getSeconds(); document.myForm.myFormTime.value = myHours + ":" + myMinutes + ":" + mySeconds; pass = myHours * 60 - inh * 60 + myMinutes - inm; if (pass<0){ pass = pass + 24 * 60; } passh = Math.floor(pass/60); passm = pass-passh*60; document.myForm.myFormSec.value = passh + "時間" + passm + "分"; over = (Math.ceil(pass/overm)-pach*60/overm)*overc; if (over>0){ charge = over+pacc; }else{ charge = pacc; } document.myForm.myFormYen.value = charge + "円"; } // --> </script> </HEAD> <BODY> <form name="myForm"> 現在の時刻<br> <input type="text" size="15" name="myFormTime"> <br> 経過時間<br> <input type="text" size="15" name="myFormSec"> <br> 料金<br> <input type="text" size="15" name="myFormYen"> </form> <script language="JavaScript"><!-- setInterval("myFunc()",1000); // --></script> </FORM> </body></html>

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

単に、結果を表示するためにウィンドウを別に作成するだけなら var w=window.open("","結果","status=no,toolbar=no,menubar=no"); w.document.write("結果の式とかなんとか書き込む"); w.document.close(); とかすればいいです。

aoikokoro
質問者

お礼

質問の仕方が悪くて大変申し訳ありません。 計算式は、1つだけではなく、複数あり、 時間の取得などもしているため、単に「結果表示」をしたいのではなく、 親ウィンドウに入力した数値を子ウィンドウの計算式に代入したいのです。 #2さんの補足に、子ウィンドウのソースを載せましたので、よろしくお願いします。

関連するQ&A