jQuery添加功能给我NaN

时间:2013-07-02 11:19:51

标签: dom jquery

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

顺便说一句,每个细线都是一个跨度,一旦将数量输入到数量文本框中,就会用行总计算填充。

所以基本上,用户出现,从一行下拉选择一个价格,所以说20.00,然后他们输入数量到文本框数量,让我们说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>

2 个答案:

答案 0 :(得分: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 Demo


如果您想使用jQuery做一些更有趣的事情,您可以根据以linetotal开头的ID选择每个跨度。如果您添加了更多跨度,这将起作用,与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 Demo

答案 1 :(得分: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标签:)