我有一个包含数值的大约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