• ベストアンサー

金額に3桁ごとにカンマを入れた、入力フォームの加算が出来ない。

金額に3桁ごとにカンマを入れた、商品注文入力フォームを作りたいのですが、加算が出来ません。 困っています、どなたか教えてください。 よろしくお願いします。WinXP IE6.0を使っています。 (金額欄) 商品1×数量=商品1金額     計算OK 商品2×数量=商品2金額     計算OK (商品明細欄) 商品1 商品名+個数+商品1金額  表示OK 商品2 商品名+個数+商品2金額  表示OK 合計(商品1+商品2)は、商品2の金額しか表示しないので、困っています。 (ソースコード) function calcTotal() { var intTotalPrice = 0; var strEstimate = "\n------------------------------------------------------ \n" + "            ご注文ご明細 \n" + "------------------------------------------------------ \n"; if (document.form1.buyItem1.checked == true) { intTotalPrice= document.form1.prcItem1.value; strEstimate = strEstimate + "商品1    :" + parseInt(document.form1.NumItem1.selectedIndex + 1) + "個  " +document.form1.prcItem1.value + "円 \n"; } if (document.form1.buyItem2.checked == true) { intTotalPrice =document.form1.prcItem2.value; strEstimate = strEstimate + "商品2 :" + parseInt(document.form1.NumItem2.selectedIndex + 1) + "個  "    + document.form1.prcItem2.value + "円 \n"; } strEstimate = strEstimate + "------------------------------------------------------ \n" + "ご注文合計 "  + intTotalPrice + "円 "; document.form2.tarEstimate.value = strEstimate; }

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

  • ベストアンサー
  • gimmick
  • ベストアンサー率49% (134/270)
回答No.2

どうもカンマの除去がうまくできていないようですね。(replaceのところ) 理由はよくわからないです。テスト用のコードを書いたので、計算できるか どうか試してください。なお、#1のコードだとカンマが複数入った場合に 問題があるので修正しました。 ---------------------------------------------------------------------- <html> <head> <script language="JavaScript"><!-- function parseIntWithComma(strInt) {   var strNew = "";   for (var i = 0; i < strInt.length; i++) {     if (strInt.charAt(i) != ',') strNew += strInt.charAt(i);   }   return parseInt(strNew); } function calcTotal() {   var intTotalPrice = 0;   var strEstimate = "------------------------------------------------------ \n"     + "            ご注文ご明細 \n"     + "------------------------------------------------------ \n";   intTotalPrice += parseIntWithComma(document.form1.prcItem1.value);   intTotalPrice += parseIntWithComma(document.form1.prcItem2.value);   strEstimate = strEstimate + "ご注文合計 "  + intTotalPrice + "円 ";   document.form2.tarEstimate.value = strEstimate; } //--> </script> </head> <body> <form name="form1"> 商品1<input type="text" name="prcItem1">円<br> 商品2<input type="text" name="prcItem2">円<br> <button onclick="calcTotal()">見積もり</button> </form> <br> <form name="form2"> <textarea name="tarEstimate" cols="60" rows="10" readonly> 金額を入力してから見積もりボタンをクリックしてください。 </textarea> </form> </body> </html> ---------------------------------------------------------------------- 全角スペースでインデントしているので削除してください。

takeji123
質問者

お礼

再度のご回答、有難うございます。 加算、うまくゆきました。 助かりました。 しかし、#1でご指摘のとおり、3桁ごとの出力にはなっていませんが、ここのところを少々悩んでみます。 でも、本当に有難うございました。

その他の回答 (3)

回答No.4

加算の方法は、gimmickさんが丁寧に書いておられるので、わかったのでよね?自分でも加算はうまくいったと書いていますよね。 加算された数値にカンマを付けるところで悩んでいるのですよね? それは、前に提示したソースのあなたが投げ出した部分が答えです。 この部分を理解せず、どのような回答を希望されているのか疑問です。

takeji123
質問者

お礼

何度も、お世話になります。 ご指摘いただいた部分を、もう一度挑戦してみました。gimmickさんのご回答に、遂にカンマが入りました。後は、予定のフォームに仕上げるだけです。 この度は、本当に有難うございました。

回答No.3

>しかし、#1でご指摘のとおり、3桁ごとの出力にはなっていませんが、ここのところを少々悩んでみます。 もうこの問題も解決しましたよね? 前の質問で私が示したソースを本当に時間をかけて解析すればわかるはずですが。

takeji123
質問者

補足

過日は、大変お世話になりました。 分析の結果、判明しましたのは、function testCalc以下の部分だけで、上の部分は不明のままです(今の私には、ちょっと難しすぎます)。 でも、お答えを参考にかなり前進させていただきましたが、加算の部分でつまづいてしまいました。 あつかましいお願いですが、加算の方法を教えていただければ、有難いのですが・・・

  • gimmick
  • ベストアンサー率49% (134/270)
回答No.1

これでどうでしょうか? (出力は3桁区切りになりませんが) 1つ目のif文の intTotalPrice = document.form1.prcItem1.value; を var strPrice1 = document.form1.prcItem1.value; strPrice1.replace(",", ""); intTotalPrice += parseInt(strPrice1); に変更。 同様に2つ目のif文を intTotalPrice = document.form1.prcItem2.value; を var strPrice2 = document.form1.prcItem2.value; strPrice2.replace(",", ""); intTotalPrice += parseInt(strPrice2); に変更。

takeji123
質問者

補足

早速のご回答、有難うございます。 ご指示通りやってみたのですが、 1,000円+10,000円=11円と表示されます。 お手数お掛けしまして、申し訳ありません。

関連するQ&A