• 締切済み

JavaSの追加計算

function keisan(){ // 設定開始 var price1 = document.form1.kazu.value; // 合計を計算 if (price1 < 10000) { var total = parseInt(price1)*44/10000; } else { var total = parseInt(price1)*45/10000; } else if // 設定終了 document.form1.field_total.value = total; // 合計を表示 } // --> </SCRIPT> 上記に追加で*22/10000の計算を入れたいのですがどうしたらいいのですようか? 初心者なので申し訳ございませんがご教授お願い致します。

みんなの回答

  • KanjiTalk
  • ベストアンサー率30% (7/23)
回答No.3

>Java S Java S ではなく JavaScript ですよ? Java と JavaScript は全く別の言語です。 (知っていたらすみません)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

#1です。 1の補足にあるスクリプトですが、 price2が一体なんなのかよくわかりませんが、 それを除けば大きな問題はないかと。 あ、ひとつありますね。 if ((price1 < 10000) && (price2.options[price2.selectedIndex].value == "????")){ var total = parseInt(price1)*20/10000; } else if ((price1 > 9999) && (price2.options[price2.selectedIndex].value == "????")){ var total = parseInt(price1)*20/10000; ↑ここの部分ですけど、price2.(略 ).value と比較する値が同じであるなら、 if (price2.(略).value == "????") { var total = parseInt(price1)*20/10000; } else if (price1 < 10000) { var total = ... } else { var total = ... } price1の値に関わらず *20/10000 をやってますから まとめた方がいいですね。 同じものを求めるのに二箇所で別々に計算していると、 間違いの元になります(片方だけしか直さないとか)。

auaua178
質問者

補足

先ほどはご返答ありがとうございます。 まとめた方が見栄えも良くわかりやすくなりました。 度々で申し訳ございませんが下記の1000=4.4、10000=45 の計算を出したのですが11000=49.5となってしまいます。 どの様な書き方ですと正しく計算するのかご教示頂けませんでしょうか? } else if (price1 < 10000) { var total = parseInt(price1)*44/10000; } else { var total = parseInt(price1)*45/10000; }

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

追加する以前に、このスクリプトは動いていないのではないですか? if () {} else {} のあとに else if とくるのは変ですよ。 あと、どのような場合に *22/10000をしたいのでしょうか? もしこのelse if の本体部に *22/10000 を使った 計算を入れたいのなら、 if (price1 < 10000) { var total = parseInt(price1)*44/10000; } else if (????) { var total = parseInt(price1)*22/10000; } else { var total = parseInt(price1)*45/10000; } のような感じになります。 *22/10000 を行う条件がわかりませんので 実際に使うときは埋めてください。 varの使い方も気になりますが、とりあえずは スルーしておきます。 ×教授 ○教示

auaua178
質問者

お礼

色々とお答えしていただきありがとうございます。 else ifにつきましては作成段階で間違って記載したものでした。 申し訳ございませんでしたm(_ _)m sakusaker7様の参考にして試行錯誤で完成させて行きたいと思ういます。

auaua178
質問者

補足

function keisan(){ // 設定開始 var price1 = document.form1.kazu.value; var price2 = document.form1.????; // 合計を計算 if ((price1 < 10000) && (price2.options[price2.selectedIndex].value == "????")){ var total = parseInt(price1)*20/10000; } else if ((price1 > 9999) && (price2.options[price2.selectedIndex].value == "????")){ var total = parseInt(price1)*20/10000; } else if (price1 < 10000) { var total = parseInt(price1)*44/10000; } else { var total = parseInt(price1)*45/10000; } // 設定終了 document.form1.field_total.value = total; // 合計を表示 } // --> こんな感じに仕上がったのですがどうでしょうか?

関連するQ&A

  • 自動計算をIEとFireFoxで動かすには?

    いつもお世話になっています。 フォームに入力した値を10で割った数を答えを自動で計算して、別フォームに出力する部分で、FireFoxでは自動計算されるのですがIEでは計算が行われませんでしたx_x; 【ソース】******************************* <script type="text/javascript"> <!-- function keisan(){ // 設定開始 // 商品1 var price1 = document.form1.goods1.value / 10; // 単価を設定 document.form1.field1.value = price1; // 小計を表示 // 合計を計算 var total = price1; // 設定終了 document.form1.field_total.value = total; // 合計を表示 } *********************************** 解決方法をご教授頂けたら幸いです。 何卒よろしくお願い致します。

  • Javascript 足し算

    ホームページ用見積もりフォーム 商品の値段を合計する。 一個ずつ足しての計算で処理してるのですが、商品がかなりの数になりそうです。 エクセルのSUMのように商品1から商品1000までを計算する関数を教えていただきたいと思っています。 JavaScriptは外部参照しています。 以下がJavaScriptのコードになります。 function keisan(){ // 設定開始 var tax = 5; // 消費税率 // 商品1 var price1 = document.form1.goods1.options[document.form1.goods1.selectedIndex].value; // 商品2 var price2 = document.form1.goods2.options[document.form1.goods2.selectedIndex].value; // 商品3 var price3 = document.form1.goods3.options[document.form1.goods3.selectedIndex].value; // 合計を計算 var total1 = parseInt(price1) + parseInt(price2) + parseInt(price3); // 設定終了 document.form1.field_total1.value = editNumberSeparated(total1); // 合計を表示 var tax2 = Math.round((total1 * tax) / 100); document.form1.field_tax.value = editNumberSeparated(tax2); // 消費税を表示 document.form1.field_total2.value = editNumberSeparated(total1 + tax2); // 税込合計を表示

  • Javascript 計算後の3桁区切り

    ホームページ用見積もりフォームをJavascriptで自動計算 縦に長いページで一番下に計算結果を表示 ページをスクロールしても、何時でも計算結果が見られるように、別のウィンドウ(レイヤー)でページ内に表示。 以上までは出来ました。 最後に計算結果を3桁区切りで表示させたいのですが、上手く出来ません。 お知恵をお貸しくださいませ。 Javascriptは外部参照しております。 3桁区切りのJavascriptを外部参照している同一のページに記入した方が良いか、別参照の方が良いかも教えていただければ幸いです。 以下がJavascriptのコードになります。 function keisan(){ // 設定開始 var tax = 5; // 消費税率 // 商品1 var price1 = document.form1.goods1.options[document.form1.goods1.selectedIndex].value; // 商品2 var price2 = document.form1.goods2.options[document.form1.goods2.selectedIndex].value; // 商品3 var price3 = document.form1.goods3.options[document.form1.goods3.selectedIndex].value; // 合計を計算 var total1 = parseInt(price1) + parseInt(price2) + parseInt(price3) ; // 設定終了 document.form1.field_total1.value = total1; // 合計を表示 var tax2 = Math.round((total1 * tax) / 100); document.form1.field_tax.value = tax2; // 消費税を表示 document.form1.field_total2.value = total1 + tax2; // 税込合計を表示 //右の窓に表示する金額 document.getElementById("display_account_amount").innerHTML = total1; document.getElementById("display_account_tax").innerHTML = tax2; document.getElementById("display_account_all").innerHTML = total1 + tax2; }

  • 計算結果を変数に代入

    とあるサービスの料金計算フォームを制作しています。 特定の場合のみ料金が割引されるので、if構文で条件分岐してみたところ、 計算結果(小計)にはうまく反映されるのですが、いくつかの小計を合計すると、 if構文で分岐する前の(つまり割り引き前の)値段で計算されてしまいます。 // 小計1 var total_01 = document.form_test.price_01.options [document.form_test.price_01.selectedIndex].value * document.form_test.goods_01.options [document.form_test.goods_01.selectedIndex].value + document.form_test.price_02.options [document.form_test.price_02.selectedIndex].value * document.form_test.goods_02.options [document.form_test.goods_02.selectedIndex].value ; // 小計1 document.form_test.F-total_01.value = total_01; // 小計1を表示 if (document.form_test.price_01.options [document.form_test.price_01.selectedIndex].value != 0 && document.form_test.price_02.options [document.form_test.price_02.selectedIndex].value != 0) {document.form_test.F-total_01.value = total_01 - 500;} // 両方で-500 if (total_01 <= 0) {document.form_test.F-total_01.value = 0;} // 合計 var total_all = total_01 + total_02 + total_034; // 合計 document.form_test.F-total_all.value = total_all; // 合計を表示 小計を表示する <INPUT TYPE="text" NAME="F-total_01" VALUE="0"> に出てきた値を、そのまま次の計算に代入できれば 解決するのではないかと思うのですが、行き詰ってしまいました。 どうかアドバイスをよろしくお願いいたします。

  • 出力した文字が消えてしまう(初心者)

    JavaScriptを勉強し始めて、基本的なコードだと思いますが、行き詰っています。すみませんが、教えて下さい。 期待:数値を計算してテキストボックスに残す 問題:一瞬テキストボックスに出るが、すぐに消えてしまう 環境:IE8,Firefox [ コード ] <HEAD> <SCRIPT language="JavaScript"> <!-- var total = 0; function keisan(){ total = parseInt(document.frmMain.price.value) + 700; document.frmMain.total.value = total; } //--> </SCRIPT> </HEAD> <BODY> <FORM name="frmMain"> <INPUT type="text" name="price" size="7">円<BR> <BUTTON onClick="keisan()">計算</BUTTON><BR> <BR> 合計:<INPUT type="text" name="total">円<BR> </FORM> </BODY> ボタンをクリックすると、アドレスにテキストボックスで入力したデータが入りページが切り替わってしまいテキストボックスが空になってしまいます。 アドレスには ~/Sample1_1.html?price=32&total=732 のようになります。よろしくお願いします。

  • ジャバスクリプトで自動計算表を作ったのですが、IEでは動くのですが、フ

    ジャバスクリプトで自動計算表を作ったのですが、IEでは動くのですが、ファイヤーフォックスでは動きません。どこに不具合があるのでしょうか? 問題のフォームはこちらです http://tatamitai.com/form1-11.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML lang="ja"> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>メールフォーム</TITLE> <META http-equiv="Content-Style-Type" content="text/css"> <META name="description" content="メールフォーム"> <META name="keywords" content="メルマガ,ホームページ,サイト制作"> <script type="text/javascript"> <!-- function keisan(){ // 設定開始 // 商品1 var price1a = 3680; var price1b = document.form1.格安コース:数.selectedIndex * 1; // 単価を設定 var price1c = document.form1.格安コース:工期等課金.value * 1; // 単価を設定 var price1d = document.form1.格安コース:柄.value * 1; // 単価を設定 var price1e = document.form1.格安コース:シート.value * 1; // 単価を設定 var price1f = document.form1.格安コース:乾燥.value * 1; // 単価を設定 var total1 = document.form1.格安コースの小計.value = (price1a + price1c + price1d + price1e + price1f) * price1b; // 小計を表示 // 商品2 var price2a = 4900; var price2b = document.form1.標準コースA:数.selectedIndex * 1; // 単価を設定 var price2c = document.form1.標準コースA:工期等課金.value * 1; // 単価を設定 var price2d = document.form1.標準コースA:柄.value * 1; // 単価を設定 var price2e = document.form1.標準コースA:シート.value * 1; // 単価を設定 var price2f = document.form1.標準コースA:乾燥.value * 1; // 単価を設定 var total2 = document.form1.標準コースAの小計.value = (price2a + price2c + price2d + price2e + price2f) * price2b; // 小計を表示 // 合計を計算 var total = total1 + total2; // 設定終了 document.form1.合計.value = total; // 合計を表示 } // --> </script> <STYLE type=text/css> <!-- A:link { FONT-SIZE: 10pt; COLOR: #ff0000; TEXT-DECORATION: none ;} A:visited { FONT-SIZE: 10pt; COLOR: #ff0000; TEXT-DECORATION: none ;} A:active { FONT-SIZE: 10pt; COLOR: #ff0000; TEXT-DECORATION: none ;} A:hover { FONT-SIZE: 10pt

  • 自動計算の追加質問

    さきほどいただいた自動計算Scriptありがとうございました。さて英語でのサイトも作っていて、こちらの方は、29.99ドルといった小数点以下の数値を使いたいですが、うまくいきません。いただいたどのスクリプトでも、合計がおかしな数字ででてきてしまうのです。例えば以下のスクリプトで、商品サンプル1を1つ選ぶと合計は36.99であるはずなのに、36.989999999999995と出てしまうのです。 どうしたら良いでしょうか? なにとぞよろしくお願い申し上げます。 <style type="text/css"> table {border-collapse: collapse;} table, th, td {border: 1px #808080 solid;} th, td {padding: 3px 10px;} th {background-color: #d3e9fa;} td {background-color: #ffffff;} td strong {color: #ff0000;} </style> <script> function keisan(){ var price1 = document.form1.goods1.selectedIndex * 29.99; document.form1.field1.value = price1; var price2 = document.form1.goods2.selectedIndex * 6; document.form1.field2.value = price2; var price3 = (price1 || price2) ? 7: 0; document.form1.field3.value = price3; var total = price1 + price2 + price3; document.form1.field_total.value = total; } </script> </head> <form action="#" name="form1"> <table> <tr> <th>商品名</th> <th>単価</th> <th>数量</th> <th>金額</th> </tr> <tr> <td>商品サンプル1</td> <td align="right">$29.99</td> <td><select name="goods1" onChange="keisan()"> <option>0</option> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select></td> <td>$<input type="text" name="field1" size="8" value="0"></td> </tr> <tr> <td>商品サンプル2</td> <td align="right">6</td> <td><select name="goods2" onChange="keisan()"> <option>0</option> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select></td> <td>$<input type="text" name="field2" size="8" value="0"></td> </tr> <tr> <td>送料</td> <td align="right">$7</td> <td> </td> <td>$<input type="text" name="field3" size="8" value="0"></td> </tr> <tr> <td align="right" colspan="3"><strong>合計</strong></td> <td>$<input type="text" name="field_total" size="8" value="0"></td> </tr> </table> </form> さきほど二重ポストをしてしまいましたが、このサイト、以前は質問するとすぐに反映されたのですが、いまはすぐに質問が出てこなかったのです。そんなわけで2回同じ質問を投稿してしまいました・・・。そのせいか一度目の質問は勝手に締め切りにされてしまいました。OneOneさん失礼いたしました。。

  • for文についてご教授ください

    javascriptを学習しています。初級者のためご教授のほどお願いします。 <!DOCTYPE html> <html lang="ja"> <head> <script> function kazu(){ var fObj = document.itemlist; var price1 = fObj.item1.options[fObj.item1.selectedIndex].value; var price2 = fObj.item2.options[fObj.item2.selectedIndex].value; var total = parseFloat(price1) + parseFloat(price2); document.getElementById("total").value = total; } </script> </head> <body> <header> <form action="#" name="itemlist" > <table> <tr> <td> <select name="item1" onchange="kazu()"> <option value="100">itemA-1</option> <option value="200">itemA-2</option> </select> </td> </tr> <td> <select name="item2" onchange="kazu()"> <option value="1000">itemB-1</option> <option value="2000">itemB-2</option> </select> </td> </tr> <tr> <td name="total"> <input type="text" value="" id="total" /> </td> </tr> </table> </form> </body> </html> 上記の内容をfor文を使い動作するようにと思っています。 自分で以下の内容を考えたのですがが動作しません。 以下の内容の問題点を教えいただければと思います。なにとぞよろしくお願いいたします。 function kazu(){ var fObj = document.itemlist; var len = document.itemlist.length; for(i=1;i<=len;i++){ var price[i] = fObj.item[i].options[fObj.item[i].selectedIndex].value; } var total = parseFloat(price1) + parseFloat(price2); document.getElementById("total").value = total; }

  • メールフォーム内の自動計算 valueの値を2つの目的で使いたい

    以下の様な形で、自動計算フォームを作っています。 金額は「value=" "」から計算されているのですが、この部分は同時に使おうと思っているメール送信の商品名の部分にあたります。 このまま送信してしまうと、商品名が数字だけになってしまうのですが、何かよい方法をご存知でしょうか・・・。 メール送信のプログラムは私の方では変えられないので、出来れば以下の自動計算フォームを変える事で解決できたらと思っています。 javascriptは専門ではないのですが、こつこつ勉強中です。よろしくお願いいたします。 -------------------------------------------------------- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Untitled Document</title> <script type="text/javascript"> <!-- function cal(){ var price1 = document.mail_form.goods1.options[document.mail_form.goods1.selectedIndex].value; var price2 = document.mail_form.goods2.options[document.mail_form.goods2.selectedIndex].value; var total = parseInt(price1) + parseInt(price2); document.mail_form.field_total.value = total; // 合計 } // --> </script> </head> <body> <form name="mail_form"> <p id="mail-form-box1"> ●商品1<br /> <select name="goods1" onChange="cal()"> <option value="100">バッグA 100円</option> <option value="200">バッグB 200円</option> <option value="300">バッグC 300円</option> </select> </p> <p id="mail-form-box2"> ●商品2<br /> <select name="goods2" onChange="cal()"> <option value="100">靴A 100円</option> <option value="200">靴A 200円</option> <option value="300">靴A 300円</option> </select> </p> 合計: $<input type="text" name="field_total" value="0"><BR> </form> </body> </html> --------------------------------------------------------

  • Javascriptで自動計算の合計の式でエラー

    度々すみません。 前回こちらで質問させて頂きましたものです。 http://okwave.jp/qa/q8737139.html 教えて頂いた内容を確認してフォームの合計を表示するところまでは出来たのですが、合計する列をひとつ増設した所、D列の合計は教えて頂いた式で合計が無事表示されたのですが、C列の合計が合計ではなく文字の並びが表示されてしまいました。 色々調べてみたのですが、この現象の原因がよくわかりません。 何かエラーがあるのでしょうか。 お知恵を貸して頂けると嬉しいです。 宜しくお願いします。 <スクリプト> <script type='text/javascript'> function keisan(){ var price1 = (document.form1.a1.value) * (document.form1.b1.value) * (document.form1.c1.value); document.form1.金額1.value = price1 ; var price2 = (document.form1.a2.value) * (document.form1.b2.value) * (document.form1.c2.value); document.form1.金額2.value = price2 ; var price3 = (document.form1.a3.value) * (document.form1.b3.value) * (document.form1.c3.value); document.form1.金額3.value = price3 ; document.form1.total.value = price1 + price2 + price3; var f1 = (document.form1.c1.value); document.form1.c1.value = f1 ; var f2 = (document.form1.c2.value); document.form1.c2.value = f2 ; var f3 = (document.form1.c3.value); document.form1.c3.value = f3 ; document.form1.ctotal.value = f1 + f2 + f3; } </script> <HTMLソース> <body> <form method="post" name="form1"> <table width="473" border='1'> <tr> <td align='center'>&nbsp;</td> <td align='center'>A</td> <td align='center'>B</td> <td align='center'>C</td> <td align='center'>D</td> </tr> <tr> <td>1</td> <td><input type='text' name='a1' onchange='keisan()' style='width:50px' /></td> <td><input type='text' name='b1' onchange='keisan()' style='width:50px' /></td> <td><input type='text' name='c1' onchange='keisan()' style='width:25px' /></td> <td><input type='text' name='金額1' style='width:100px' /></td> </tr> <tr> <td>2</td> <td><input type='text' name='a2' onchange='keisan()' style='width:50px' /></td> <td><input type='text' name='b2' onchange='keisan()' style='width:50px' /></td> <td><input type='text' name='c2' onchange='keisan()' style='width:25px' /></td> <td><input type='text' name='金額2' style='width:100px' /></td> </tr> <tr> <td>3</td> <td><input type='text' name='a3' onchange='keisan()' style='width:50px' /></td> <td><input type='text' name='b3' onchange='keisan()' style='width:50px' /></td> <td><input type='text' name='c3' onchange='keisan()' style='width:25px' /></td> <td><input type='text' name='金額3' style='width:100px' /></td> </tr> <tr> <td colspan="3" align='right'>合計</td> <td><input type='text' name='ctotal' style='width:25px' /></td> <td><input type='text' name='total' style='width:100px' /></td> </tr> </table> </form> </body>

専門家に質問してみよう