如何使用jQuery对div内的所有值求和

时间:2018-06-21 04:25:01

标签: javascript jquery

我有一个像这样的元素

   <div id="crt_total_1">10000</div>
   <div id="crt_total_2">20000</div>
   <div id="crt_total_3">30000</div>
   <div id="crt_total_4">40000</div>

如何对div中的所有值求和以生成结果 100000

5 个答案:

答案 0 :(得分:2)

尝试一下:-

var sum = 0;
$('.crt_total').each(function(){
    sum += parseFloat($(this).text());  // Or this.innerHTML, this.innerText
});
 alert(sum)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="crt_total">10000</div>
   <div class="crt_total">20000</div>
   <div class="crt_total">30000</div>
   <div class="crt_total">40000</div>

答案 1 :(得分:1)

您可以尝试单行获取总和。

reduce函数需要空数组,因此只需检查以下一种情况即可。

if ($('[id*=crt_total_]').toArray().map(x => parseInt($(x).text())).length > 0) {   
    $('[id*=crt_total_]').toArray().map(x => parseInt($(x).text())).reduce((total, num) => total + num)
}

如果您不熟悉lambda表达式,则可以尝试遵循。

if ($('[id*=crt_total_]').toArray().map(function(x) { return parseInt($(x).text()) }).length > 0) {
    $('[id*=crt_total_]').toArray().map(function(x) { return parseInt($(x).text()) }).reduce(function(total, num) { return total + num; })
}

答案 2 :(得分:0)

将div插入以使用子级和循环来求和

function getSum()
{
var output=0;
$('#cartValContainer').children('div').each(function () {
    output += parseInt(this.innerHTML); // "this" is the current element in the loop
});
return output;
}
var out=getSum();
console.log(out);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="cartValContainer">
  <div id="crt_total_1">10000</div>
   <div id="crt_total_2">20000</div>
   <div id="crt_total_3">30000</div>
   <div id="crt_total_4">40000</div>
   </div>

答案 3 :(得分:0)

下次尝试展示您的作品(尝试找到自己的方式,然后在遇到问题后询问)。 另外,更好地阐述您的问题。 但是,这就是您要寻找的东西。

假设您正在使用JQuery,这些是使您继续处理HTML元素的步骤。

  1. 通过JQuery选择器获取元素。 您所有元素的var elem_1 = $('#crt_total_1').text()
  2. 如果需要,请使用parseFloat(elem_1)
  3. 解析您的值
  4. 执行求和函数。

答案 4 :(得分:0)

您可以使用Attribute Starts With Selector [attribute^="value"]并遍历您的值。

var sum = 0;
$('[id^=crt_total_]').each(function(){
  sum = sum + parseInt($(this).text());
});
console.log(sum);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="crt_total_1">10000</div>
<div id="crt_total_2">20000</div>
<div id="crt_total_3">30000</div>
<div id="crt_total_4">40000</div>