2011-08-10 30 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(); 
相關問題