0

次の関数を使用して、すべての行の合計を合計しています。それぞれの合計は 23.45 などの 10 進数になります。ユーザーがテキスト入力ボックスのいずれかに任意の数量を入力すると、関数が起動するはずですが、現時点で総計で取得しているのは NaN だけです。それは誰ですか?なぜ彼女は私のスクリプトをいじっているのでしょうか?

ちなみに、各 linetotals はスパンであり、数量が qty テキスト ボックスに入力されると、line total 計算が入力されます。

つまり、基本的に、ユーザーがやって来て、1行目のドロップダウンから価格を選択します.20.00としましょう。次に、数量をテキストボックスqtyに入力します.2としましょう。jQueryはqtyをpriceeachで乗算し、スパンに出力しますid linetotal1. 私がやりたいのは、すべての linetotals を合計して合計することですが、2 行目に何も入力しない場合、linetotal2、3、4、5 は空になります。

  <script>
   $(document).ready(function () {
      $('input').on('keyup', function () {
           linetotal1 =  $('#linetotal1').text(),
            linetotal2 =  $('#linetotal2').text(),
             linetotal3 =  $('#linetotal3').text(),
              linetotal4 =  $('#linetotal4').text(),
               linetotal5 =  $('#linetotal5').text(),
    grandtotal = parseFloat(linetotal1) + parseFloat(linetotal2) + parseFloat(linetotal3) +     parseFloat(linetotal4) + parseFloat(linetotal5);
    $('#grandtotal').text(grandtotal);
       });  });
   </script>
4

2 に答える 2

1

1 から 5 までループして0、空白文字列の場合は値をデフォルトにすることができます。

var rawValue, grandtotal = 0;

for(var i=1; i<6; i++)
{
     rawValue = $.trim($('#linetotal' + i).text());
     if(rawValue == '') rawValue = 0;
     grandtotal += parseFloat(rawValue);
}

$('#grandtotal').text(grandtotal);

jsFiddle デモ


jQuery で少し手の込んだことをしたい場合は、 で始まる ID に基づいて各スパンを選択できますlinetotal。これは、さらにスパンを追加した場合に機能しますが、forループの場合と同様に、カウントを更新する必要があります。すべてのスパンに共通のクラスがあり、それを使用して簡単に選択できるとよいでしょう。

var rawValue, grandtotal = 0;

$('span[id^="linetotal"]').each(function(i, elem){
     rawValue = $.trim($(this).text());
     if(rawValue == '') rawValue = 0;
     grandtotal += parseFloat(rawValue);
});

$('#grandtotal').text(grandtotal);

jsFiddle デモ

于 2013-07-02T11:30:52.457 に答える