0

合計として追加する必要があるフォームに次の表の行があります。そのためには、金額から「$」と「,」を削除する必要があります。

    <tr>
    <td>football</td>
    <td class="price" style="text-align: right">$23,432.00</td>
    </tr>
    <tr>
    <td>baseball</td>
    <td class="prcice" style="text-align: right">$23,432.00</td>
    </tr>
     <div id="result"></div>

追加する機能は

 function calculateSum() {
              var sumtotal = 0;
              $(".price").each(function () {

                  var value = $(this).text($(this).text().replace(/\$\$/g, '$',','));                
                 alert("value" + value);
                  if (!isNaN(value) && value.length != 0) {
                      sumtotal += parseFloat(value);
                  }
              });
              alert(sumtotal);
              $('#result').text(sumtotal);
          };

私の document.ready() 内よりも、これを使用して呼び出しています。

 $(document).ready(function () { 
 $('.price').each(function () {
                  $(calculateSum);
              });
});

結果に0が返され、値にアラート値[オブジェクトオブジェクト]が表示されます。合計を適切に取得する方法を教えてください。ありがとう

4

2 に答える 2

1

replaceメソッドを正しく使用していません。2 つのパラメーターのみを使用する必要があります。1 つ目は置換する正規表現または文字列で、2 つ目は新しい値です。これを試して:

var value = "$23,432.00"; // here you pick the value from your table cell
var floatValue = parseFloat(value.replace(/[\$,]/g, ''))
alert(floatValue)

また、@charlietfl からの回答を見てください。彼は、コードで修正すべき他の問題を指摘しています。

于 2013-10-27T22:17:12.537 に答える
0

ここでは、あらゆる種類の問題が発生しています。

まず$(calculateSum);、通常の関数を呼び出す方法ではありません。それは単純なはずですcalculateSum();

次に、calculateSum()それぞれをループします$('.ethnTotal')が、$(document).ready別のループを作成し、そのループの各パス$('.ethnTotal').eachを呼び出そうとしていますcalculateSum()

これはあなたの計算を指数関数的に膨らませます!!

于 2013-10-27T22:21:12.463 に答える