dポイントプレゼントキャンペーン実施中!

金額に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;
}

A 回答 (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>
----------------------------------------------------------------------
全角スペースでインデントしているので削除してください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/11/24 11:44

加算の方法は、gimmickさんが丁寧に書いておられるので、わかったのでよね?自分でも加算はうまくいったと書いていますよね。


加算された数値にカンマを付けるところで悩んでいるのですよね?
それは、前に提示したソースのあなたが投げ出した部分が答えです。
この部分を理解せず、どのような回答を希望されているのか疑問です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/11/26 21:29

>しかし、#1でご指摘のとおり、3桁ごとの出力にはなっていませんが、ここのところを少々悩んでみます。



もうこの問題も解決しましたよね?
前の質問で私が示したソースを本当に時間をかけて解析すればわかるはずですが。

この回答への補足

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

補足日時:2003/11/26 00:13
    • good
    • 0

これでどうでしょうか? (出力は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円と表示されます。
お手数お掛けしまして、申し訳ありません。

補足日時:2003/11/24 00:15
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!