- ベストアンサー
金額に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; }
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
どうもカンマの除去がうまくできていないようですね。(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> ---------------------------------------------------------------------- 全角スペースでインデントしているので削除してください。
その他の回答 (3)
- torakiyojp
- ベストアンサー率58% (25/43)
加算の方法は、gimmickさんが丁寧に書いておられるので、わかったのでよね?自分でも加算はうまくいったと書いていますよね。 加算された数値にカンマを付けるところで悩んでいるのですよね? それは、前に提示したソースのあなたが投げ出した部分が答えです。 この部分を理解せず、どのような回答を希望されているのか疑問です。
お礼
何度も、お世話になります。 ご指摘いただいた部分を、もう一度挑戦してみました。gimmickさんのご回答に、遂にカンマが入りました。後は、予定のフォームに仕上げるだけです。 この度は、本当に有難うございました。
- torakiyojp
- ベストアンサー率58% (25/43)
>しかし、#1でご指摘のとおり、3桁ごとの出力にはなっていませんが、ここのところを少々悩んでみます。 もうこの問題も解決しましたよね? 前の質問で私が示したソースを本当に時間をかけて解析すればわかるはずですが。
補足
過日は、大変お世話になりました。 分析の結果、判明しましたのは、function testCalc以下の部分だけで、上の部分は不明のままです(今の私には、ちょっと難しすぎます)。 でも、お答えを参考にかなり前進させていただきましたが、加算の部分でつまづいてしまいました。 あつかましいお願いですが、加算の方法を教えていただければ、有難いのですが・・・
- gimmick
- ベストアンサー率49% (134/270)
これでどうでしょうか? (出力は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); に変更。
補足
早速のご回答、有難うございます。 ご指示通りやってみたのですが、 1,000円+10,000円=11円と表示されます。 お手数お掛けしまして、申し訳ありません。
お礼
再度のご回答、有難うございます。 加算、うまくゆきました。 助かりました。 しかし、#1でご指摘のとおり、3桁ごとの出力にはなっていませんが、ここのところを少々悩んでみます。 でも、本当に有難うございました。