Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dom jQuery加法函数给了我NaN_Dom_Jquery - Fatal编程技术网

Dom jQuery加法函数给了我NaN

Dom jQuery加法函数给了我NaN,dom,jquery,Dom,Jquery,我正在使用以下函数将我的所有行总计相加。每个总数将是一个十进制数字,如23.45。当用户在任何文本输入框中输入任何数量时,它应该会启动该功能,但我现在在grandtotal中得到的只是NaN,是谁NaN,她为什么要搞乱我的脚本 顺便说一句,每个行总计都是一个范围,一旦在“数量”文本框中输入了数量,该范围将填充行总计计算 基本上,用户从第1行下拉列表中选择一个价格,比如说20.00,然后将数量输入文本框qty,比如说2,jQuery然后将qty乘以priceeach,输出到id为linetotal

我正在使用以下函数将我的所有行总计相加。每个总数将是一个十进制数字,如23.45。当用户在任何文本输入框中输入任何数量时,它应该会启动该功能,但我现在在grandtotal中得到的只是NaN,是谁NaN,她为什么要搞乱我的脚本

顺便说一句,每个行总计都是一个范围,一旦在“数量”文本框中输入了数量,该范围将填充行总计计算

基本上,用户从第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>

$(文档).ready(函数(){
$('input')。在('keyup',函数(){
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);
});  });

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

    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') ?>!";
 }
var disValue=new Array();
var this_size=document.getElementsByName(“myVal”).length;
总和=0;

对于(i=0;i您可以从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);

如果任何
parseFloat
调用返回
NaN
,结果将是
NaN
。如果无法将输入转换为数字,则返回该值。例如
parseFloat(“”)
返回
NaN
。如何向每个调用添加一个If为空,这样它就会忽略它?哈哈哈…“谁是NaN”…epic…不管怎样,你说的文本框对吗?那么你必须使用
$(…).val()
而不是
text()
.linetotal是包含通过将两个其他元素添加到一起而生成的内容的跨距。我正在将每个跨距的内容添加到一起,但在对该行进行计算之前,某些跨距将为空。linetotal1=parseFloat($('#linetotal1').text())| 0,尝试了此操作。$(文档)。就绪(函数(){$('input')。打开('keyup',function(){var rawValue,grandtotal=0;for(var i=1;iAh,我在
grandtotal
中有一个大写的T,我已经编辑好了。还添加了demo。哇,很酷,谢谢你,第二个很好用!)
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);