0

我正在使用以下函数将我的所有行总计加在一起。每个总数都是十进制数,例如 23.45 。当用户在任何文本输入框中输入任何数量时,它应该触发该功能,但我现在总共得到的是 NaN,它是谁,为什么她要弄乱我的脚本?

顺便说一下,每个 linetotals 都是一个 span,一旦在 qty 文本框中输入了数量,就会填充 line total 计算。

所以基本上,用户出现,从第一行下拉菜单中选择一个价格,比如说 20.00 ,然后他们在文本框中输入数量 qty,比如说 2,jQuery 然后将 qty 乘以 priceeach 并输出到 span 中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

0您可以从 1-5 循环,如果它是一个空白字符串,则默认值为:

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 回答
0

您应该循环执行此操作,我之前已为我的客户执行此操作,检查我的代码是否对您有帮助

    var disValue = new Array();
    var this_size = document.getElementsByName("myVal").length;
    sum = 0;
    for (i=0; i<this_size; i++)
    {
          disValue[i] = document.getElementsByName("myVal")[i].value;
    }

    for (i=0; i<this_size; i++)
    {
        sum = parseFloat(sum)+ parseFloat(disValue[i]);
    }

 if (sum != 0) {
document.getElementById("disc_test").innerHTML="<?php echo $this->__('You are saving') ?> "+sum +" <?php echo $this->__('on this order') ?>!";
 }

忽略php标签:)

于 2013-07-02T11:28:34.077 回答