我有一個包含數值的大約30個文本字段的訂單。我想計算所有模糊值的總和。jQuery計算所有文本字段中的值的總和
我知道如何選擇所有文本字段,但不知道如何遍歷它們並將所有值相加?
$(document).ready(function(){
$(".price").blur(function() {
//loop and add up every value from $(".price").val()
})
});
我有一個包含數值的大約30個文本字段的訂單。我想計算所有模糊值的總和。jQuery計算所有文本字段中的值的總和
我知道如何選擇所有文本字段,但不知道如何遍歷它們並將所有值相加?
$(document).ready(function(){
$(".price").blur(function() {
//loop and add up every value from $(".price").val()
})
});
$('.price').blur(function() {
var sum = 0;
$('.price').each(function() {
sum += Number($(this).val());
});
// here, you have your sum
});
Thx @MarkoDumic但如果我想有點像小計(數量*價格)然後大肆吹捧! – 2016-03-09 19:44:18
對於稍微更優雅的解決方案,您可以使用Array.prototype.reduce:http://stackoverflow.com/a/37466639/1988326 – 2016-05-27 20:20:10
使用此功能:
$(".price").each(function(){
total_price += parseInt($(this).val());
});
價格並非總是整數。 – 2010-03-10 14:28:13
我想你會想'parseFloat()' – alex 2010-03-10 14:34:39
這應該修復它:
var total = 0;
$(".price").each(function(){
total += $(this).val() * 1;
});
這將連接從.val()返回的字符串。 – 2010-03-10 15:00:30
來自匿名用戶的建議是使用以下內容:'var total = 0; (「。price」)。each(function(){ total + = $(this).val()* 1; });' – Fluffeh 2012-09-18 13:31:05
$(".price").each(function(){
total_price += parseFloat($(this).val());
});
請嘗試像THI s ...
我不確定你想要這個:''2個蘋果「 +「3 oranges」=> 5' – 2012-06-29 13:03:34
我有一個包含數值的大約30個文本字段的訂單** ** – JSobell 2014-07-24 06:00:17
我不確定爲什麼您Marko會認爲他的方法適用於除添加值。 – 2014-11-13 08:18:08
爲您的項目提供更通用的複製/粘貼功能。
sumjq = function(selector) {
var sum = 0;
$(selector).each(function() {
sum += Number($(this).text());
});
return sum;
}
console.log(sumjq('.price'));
我認爲你的意思是'.val()'而不是'.text()' – 2015-10-28 18:51:57
@PeterMeth它似乎取決於http://stackoverflow.com/questions/807867/difference-between-val-and-text – ubershmekel 2015-10-28 20:15:00
類似地沿着這些答案寫成一個插件的行:
$.fn.sum = function() {
var sum = 0;
this.each(function() {
sum += 1*($(this).val());
});
return sum;
};
對於記錄1 * x是在鉻
$('.price').blur(function() {
var sum = 0;
$('.price').each(function() {
if($(this).val()!="")
{
sum += parseFloat($(this).val());
}
});
alert(sum);
});
JS Fiddle比數(X)快
如果你不需要支持IE 8然後你可以使用本地的Javascript Array.prototype.reduce()
方法。您需要將您的jQuery對象首先轉換爲數組:
var sum = $('.price').toArray().reduce(function(sum,element) {
return sum + Number(element.value);
}, 0);
參考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
瀏覽jQuery每個功能(http://api.jquery.com/each/) – Lazarus 2010-03-10 14:29:29
只是想知道一件事。爲什麼上面發佈的被問到的人沒有被問到他所做的研究工作。由於發佈的問題沒有顯示任何研究工作或他至少嘗試過什麼,尤其是當問題不是非常複雜和棘手的問題時。上述問題的解決方案可以很容易地被谷歌收到22票。在投票中沒有問題,但研究工作呢?被問及關於研究工作的有關Stack的較少要點的成員是否被問到了? – 2013-08-29 05:37:00
可能重複的[使用jQuery每個函數](http://stackoverflow.com/questions/4377410/sum-using-jquery-each-function) – KyleMit 2016-10-12 13:04:12