简体   繁体   English

如何使用 jQuery 对一组元素的值求和?

[英]How can I sum values from a group of elements using jQuery?

How can I sum values from a group of elements using jQuery?如何使用 jQuery 对一组元素的值求和?

When I use console.log and the browser shows the result it is the sum of all values from the div elements.当我使用console.log并且浏览器显示结果时,它是div元素中所有值的总和。 How can I sum my values in a condition that they have the same class ?如何在它们具有相同class的条件下对我的值求和?

 let sumPartOne = 0; let sumPartTwo = 0; let sumPartTree = 0; let sumPartFour = 0; let sumPartFive = 0; for (let i = 1; i < 6; i++) { $(`.part-${i}`).each(function() { sumPartOne += isNaN($(this).text())? 0: parseInt($(this).text()); }) } console.log(sumPartOne);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="part-1">10</div> <div class="part-2">20</div> <div class="part-3">30</div> <div class="part-4">40</div> <div class="part-5">50</div> <div class="part-1">20</div> <div class="part-2">30</div> <div class="part-3">40</div> <div class="part-4">50</div> <div class="part-5">60</div>

https://jsfiddle.net/bq0md39y/22/ https://jsfiddle.net/bq0md39y/22/

The simplest way to achieve what you need to would be to build an object keyed by the part-X value.实现您需要的最简单的方法是构建一个由part-X值键入的 object。 You can achieve that using a common class, a data attribute and each() , like this:您可以使用常见的 class、数据属性和each()来实现,如下所示:

 let sum = {}; $('.part').each((i, el) => sum[el.dataset.group] = (sum[el.dataset.group] || 0) + parseInt(el.innerText, 10)); console.log(sum);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="part" data-group="part-1">10</div> <div class="part" data-group="part-2">20</div> <div class="part" data-group="part-3">30</div> <div class="part" data-group="part-4">40</div> <div class="part" data-group="part-5">50</div> <div class="part" data-group="part-1">20</div> <div class="part" data-group="part-2">30</div> <div class="part" data-group="part-3">40</div> <div class="part" data-group="part-4">50</div> <div class="part" data-group="part-5">60</div>

The benefit of this approach is that it's infinitely extensible simply by amending the HTML.这种方法的好处是它可以无限扩展,只需修改 HTML。 You don't need to change the JS if any other groups of elements are added/removed.如果添加/删除了任何其他元素组,则无需更改 JS。

You need to increment variables sumPart{count} based on iteration.您需要根据迭代增加变量sumPart{count} For example when you are at "part-1" you want to increment sumPartOne and same for "part-2" you want to increment sumPartTwo例如,当您在“part-1”时,您想要增加sumPartOne ,而对于“part-2”,您想要增加sumPartTwo

let sumPartOne = 0;
let sumPartTwo = 0;
let sumPartThree = 0;
let sumPartFour = 0;
let sumPartFive = 0;

function addition(part, i) {
   switch (part) {
     case 1:
       sumPartOne += isNaN(i) ? 0 : parseInt(i);
      
     case 2:
       sumPartTwo += isNaN(i) ? 0 : parseInt(i);
       
     case 3:
       sumPartThree += isNaN(i) ? 0 : parseInt(i)
       
     case 4:
       sumPartFour += isNaN(i) ? 0 : parseInt(i);
       
     case 5:
       sumPartFive += isNaN(i) ? 0 : parseInt(i);
   }
}

for (let i = 1; i < 6; i++) {
        $(`.part-${i}`).each(function () {
        addition(i, $(this).text())
    })
}

console.log('1', sumPartOne);
console.log('2', sumPartTwo);
console.log('3', sumPartThree);
console.log('4', sumPartFour);
console.log('5', sumPartFive);

ps This way you can use switch condition where you will apply same logic that you are using in your example but we will increment values based on part on which we are iterating. ps 这样,您可以使用切换条件,您将应用您在示例中使用的相同逻辑,但我们将根据我们正在迭代的部分增加值。 You will have values incremented properly for each summation than having all increments on sumPartOne variable.sumPartOne变量的所有增量相比,每个总和的值都会正确增加。

Since you are using five differently named variables to store the sum of the five parts, you can use switch to store the sums.由于您使用五个不同命名的变量来存储五个部分的总和,因此您可以使用switch来存储总和。

 let sumPartOne = 0; let sumPartTwo = 0; let sumPartThree = 0; let sumPartFour = 0; let sumPartFive = 0; for (let i = 1; i < 6; i++) { let sum = 0; $(`.part-${i}`).each(function () { sum += isNaN($(this).text())? 0: parseInt($(this).text()); }) switch(i) { case 1: sumPartOne = sum; break; case 2: sumPartTwo = sum; break; case 3: sumPartThree = sum; break; case 4: sumPartFour = sum; break; case 5: sumPartFive = sum; break; } } console.log(sumPartOne, sumPartTwo, sumPartThree, sumPartFour, sumPartFive);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="part-1">10</div> <div class="part-2">20</div> <div class="part-3">30</div> <div class="part-4">40</div> <div class="part-5">50</div> <div class="part-1">20</div> <div class="part-2">30</div> <div class="part-3">40</div> <div class="part-4">50</div> <div class="part-5">60</div>

However, it would be better to store all the sums in an object.但是,最好将所有总和存储在 object 中。

 let sums = {}; for (let i = 1; i < 6; i++) { let sum = 0; $(`.part-${i}`).each(function () { sum += isNaN($(this).text())? 0: parseInt($(this).text()); }) sums[`.part-${i}`] = sum; } console.log(sums);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="part-1">10</div> <div class="part-2">20</div> <div class="part-3">30</div> <div class="part-4">40</div> <div class="part-5">50</div> <div class="part-1">20</div> <div class="part-2">30</div> <div class="part-3">40</div> <div class="part-4">50</div> <div class="part-5">60</div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何按键对元素进行分组并使用 javascript 附加该特定键的值? - How can i group the elements by key and append the values for that particular key using javascript? 如何使用javascript / jQuery获取表单字段值以求和另一个字段值? - How can I get form field values to sum up to another field value using javascript/jQuery? 如何删除jQuery组的其他成员的后代元素? - How can I remove elements of a jQuery group that are descendants of other members? 如何使用jQuery计算单选按钮值的总和? - How might I calculate the sum of radio button values using jQuery? 如何对对象数组中的值进行分组和求和? - How to group and sum values from array of objects? 我如何使用jQuery抓取变量子元素的值 - How can I crawl values of variable sub-elements using jquery 如何使用 javascript / jQuery 根据内部 div 元素内容/值对 div 元素进行排序? - How can I sort div elements based on inner div element content / values using javascript / jQuery? 如何使用JQuery / JavaScript将对象数组中的值分组并从这些组中创建新的对象数组 - Using JQuery/JavaScript how would I group values in an array of objects and create a new array of objects from the groups 如何使用混合类型的jQuery从表单中获取所有元素和值 - How can I get all elements and values from a form in with jquery with mixed types 如何仅使用没有库的javascript从同一个类的不同div获取值的总和? - How can I get sum of values from different divs with the same class using only javascript without libraries?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM