我有以下动态显示的等级
我想在加载数据后计算总成绩。
<div class="grade" id="grade-1">70</div>
<div class="grade" id="grade-2">90</div>
<div class="grade" id="grade-3">80</div>
<div class="grade" id="grade-4">60</div>
<div class="grade" id="grade-5">90</div>
<div class="grade" id="grade-6">80</div>
<div class="grade" id="grade-7">80</div>
<div class="grade" id="grade-8">60</div>
<div class="grade" id="grade-9">90</div>
.............
.............
使用javascript我想计算这个总数,成绩数是动态的。 帮助我。
答案 0 :(得分:2)
您可以使用.each()
遍历所有元素:
var gradesum=0;
$('.grade').each(function(){gradesum+= parseInt($(this).text());});
alert(gradesum);
<强> Working Demo 强>
答案 1 :(得分:2)
您可以执行以下操作:
var total_grade = 0;
$('.grade').each(function() {
total_grade += parseInt($(this).text());
});
console.log(total_grade);
希望这有帮助。
答案 2 :(得分:2)
您也可以使用javascripts reduce
功能作为替代方案:
var grades = document.querySelectorAll(".grade"),
grades = Array.prototype.slice.call(grades);
var total = grades.reduce(function(previous, current, index, array){
return parseInt(previous, 10) + parseInt(array[index].textContent, 10);
}, 0);
这里有一些注意事项:
querySelectorAll
返回节点列表,我们必须使用Array.prototype.slice
将结果转换为正确的数组。parseInt
上的基数。 正如评论中所指出的,您可以通过合并map
和reduce
来做类似的事情:
var grades = document.querySelectorAll(".grade");
grades = Array.prototype.slice.call(grades);
var total = grades.map(function(el){
return parseInt(el.textContent, 10);
}).reduce(function(previous, current){
return previous + current;
}, 0);
示例2:http://jsfiddle.net/BTvsL/1/
注意:如果您需要根据浏览器要求在.innerHTML
与.innerText
之间进行测试,可以通过测试每个版本并默认为0来执行此操作: < / p>
var text = el.textContent || el.innerText || 0;
答案 3 :(得分:1)
var total = 0;
$("div.grade").each(function() { total += parseFloat($(this).html()); } );
答案 4 :(得分:1)
您可以选择具有.grade类的所有元素。并对文本求和
var total=0;
$(".grade").each(function(){
total+= +$(this).text();
});
alert(total);
答案 5 :(得分:0)
对于兼容ES5和最新W3C规格的浏览器,您可以一次性获得总和:
var sum = $('div.grade').map(function() {
return +this.textContent || 0; // || 0 to cope with any NaNs
}).get().reduce(function(a, b) { return a + b }, 0);
即。获取元素及其文本内容的数值(与IE9 +兼容),将其转换为本机数组,然后使用ES5标准函数Array.prototype.reduce
计算这些值的总和。
答案 6 :(得分:0)
另一种方法是使用jQuery .map()
和javascript .reduce()
var total = $('.grade').map(function(){
return $(this).text()*1; // to make sure this is a number
}).get().reduce(function(a, b) {
return a + b;
});
alert(total);