我正在使用以下函数将所有行总计添加到一起。每个总数将是十进制数,例如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>
答案 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标签:)