2011-08-10 27 views

回答

2

你可以这样做:

var cents_total = 0; 

$('#stock-hotdogs .subtotal').each(function() { 
    var value = $.trim($(this).text()); 
    var parts = value.substr(1).split('.'); 
    cents_total += +parts[0] * 100 + (+parts[1] || 0); 
}); 

这里我不使用parseFloat,因为不应该使用浮点值进行财务计算(舍入误差)。应该是微不足道的百分之值转换成美元:)

+0

+1这一个实际上会工作,因为它处理前导'$',但为什么'.split()'而不是使用'parseFloat()'? – user113716

+0

@patrickdw:由于浮点运算中的舍入误差。至少这是我在这里学到的:不要使用浮点值来赚钱;) –

+0

哦,有问题。你以美分结果。好主意。 – user113716

1
var inputs = $('td.subtotal', '#stock-hotdogs').find('input'); 

var total = 0; 

$(inputs).each(function() { 
    total += parseFloat($(this).val().replace(/[^\d\.]+/g, '')); 
}); 

Here是现场工作示例或

未使用的输入元素的第二个版本......

$('#totalbtn').click(function() { 
    var total = 0; 
    $('td.subtotal', '#stock-hotdogs').each(function() { 
     total += parseFloat($(this).text().replace(/[^\d\.]+/g, '')); 
    }); 

}); 

HERE是这样的一个例子...

+1

-1:'VAL()'只能在表单字段工作,'parseInt'将返回'NaN'开始用'$'文本。即使它起作用,你也会放弃这些美分。 *编辑:*我明白了,你认为会有输入字段...... OP并没有说这个。 –

+0

由于您的代码符合您的假设,因此我撤回-1。 –

+0

@Felix King,我明白你在说什么,我添加了一个正则表达式来解决这个问题。 – Gabe

0
var subTotals = $('#stock-hotdogs td.subtotal'); 
var sum = 0; 

subTotals.each(function() { 
    sum += parseFloat($(this).text().substr(1)); 
}); 

alert(sum); 

工作实例:http://jsfiddle.net/FishBasketGordo/f5V9P/

+0

td.subtotal实际上也是用jQuery生成的,具体取决于你想要的每种“热狗”种类。我怎样才能使用它,所以每次我改变class .qty输入中的内容时,总和已更新并显示在#show-total中? –

+0

我实际上是这样使用它http://pastie.org/2352865,但结果是“NaN”。当我调试它时,它似乎获得了第一个值,但随后它变成了Nan –

0

用途:

var total=0; 
$('#stock-hotdogs .subtotal').text(function(i,v){ 
    total+=parseFloat(v.substr(1)); 
}); 

alert('total: $'+total.toFixed(2)); 
0

看看在JQuery Calculation插件:它可以让你指定哪些领域总结使用jQuery选择器。使用它,你会做这样的事情:

$("#stock-hotdogs").find("td.subtotal").sum(); 
相关问题