数字串联而不是加法

时间:2018-10-15 14:27:16

标签: javascript jquery

我知道+用于加法和串联,这取决于变量类型是什么。我尝试使用Number()和parseFloat(),但似乎无法使它们正常工作。这是我的代码:

find

这段代码给我这样的输出:

var grandtotal;         
$("#table tr").each(function () {
    var row = $(this).closest('tr');
    var totalprice = row.find('input[id^="TotalPrice"]').val();
    grandtotal += totalprice;
});

$(".total_price").html(grandtotal);

但是,如果我将Number()或parseFloat()添加到总价格行中,如下所示:

NaN1081083936354412531.5105

OR

grandtotal += Number(totalprice);

我什么也没得到。

有人知道我需要更改什么吗?谢谢。

编辑:我已将控制器代码更改为此:

grandtotal += parseFloat(totalprice);

这是有问题的HTML:

 var grandtotal = 0;

            $("#table tr").each(function () {
                var row = $(this).closest('tr');
                var totalprice = parseFloat(row.find('input[id^="TotalPrice"]').val());
                grandtotal += totalprice;
            });

            $(".total_price").html(grandtotal);

我仍然得到空白输出。

2 个答案:

答案 0 :(得分:0)

使用grandtotal0设为parseFloat()将解决您的问题。您正在尝试将tr的值添加到未定义的变量中。

// give grand total a value
var grandtotal = 0;

$(document).ready(function(){
 $("#table tr").each(function () {
                var row = $(this).closest('tr');
                var totalprice = parseFloat(row.find('input[id^="TotalPrice"]').val()); 
                grandtotal += totalprice;
});

 $(".total_price").html(grandtotal);

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<table id="table">
<tr>
<td>
<input type="text" id="TotalPrice" value="1000.50"/>
</td>
</tr>

<tr>
<td>
<input type="text" id="TotalPrice" value="2000"/>
</td>
</tr>

<tr>
<td>
<input type="text" id="TotalPrice" value="10"/>
</td>
</tr>
</table>

<div class="total_price"></div>

答案 1 :(得分:-1)

尝试检查isNaN

// Inside each
if (totalprice && totalprice.length > 0 && !isNaN(totalprice)) {
    grandtotal += parseFloat(totalprice);
}

function getFloat(val) {
  if (val && val.length > 0 && !isNaN(val)) {
    return parseFloat(val);
  }
  return null;
}

console.log("getFloat($('#inp1').val()): " + getFloat($('#inp1').val()));
console.log("getFloat($('#inp2').val()): " + getFloat($('#inp2').val()));
console.log("getFloat($('#inp3').val()): " + getFloat($('#inp3').val()));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="inp1" type="text" value="" />
<input id="inp2" type="text" value="literal" />
<input id="inp3" type="text" value="100" />