我想添加一些具有相同类名的HTML元素。
因此,代码将与jQuery一样。
$(".force").each(function (){
a += parseInt( $(this).html());
});
$("#total_forces").html(a);
在此代码中,变量必须是全局变量。
是否还有其他优雅的方法可以对每个.force
值求和并从each
函数中求出没有全局变量的总和?
答案 0 :(得分:12)
如果您不想引入全局变量,可以使用以下内容:
$("#total_forces").html(function() {
var a = 0;
$(".force").each(function() {
a += parseInt($(this).html());
});
return a;
});
答案 1 :(得分:4)
为方便起见,如果您经常需要同样的功能,我可能只是制作一个插件。
示例: https://jsfiddle.net/tzw4mkL2/
(function( $ ) {
$.fn.sumHTML = function() {
var sum = 0;
this.each(function() {
var num = parseInt( $(this).html(), 10 );
sum += (num || 0);
});
return sum;
};
})( jQuery );
......会像这样使用:
$('#total_forces').html( $('.force').sumHTML() );
编辑:如@Šime Vidas所述,更改为警惕NaN
。同时确保parseInt()
中的base-10并修复了丢失的结束}
。
答案 2 :(得分:2)
简而言之,没有。
为什么a
必须是全球性的? 不是全球性的。
function aFunc() {
var a = 0;
$(".force").each(function (){
a += parseInt( $(this).html());
});
return a;
}
$("#total_forces").html(aFunc());
其中,可以简化为:
$("#total_forces").html(function() {
var a = 0;
$(".force").each(function (){
a += parseInt( $(this).html());
});
return a;
});
此处a
是aFunc
的本地,并且只是数百万不属于全球范围的示例之一。
答案 3 :(得分:1)
不想要全球化吗?
(function() {
var a = 0;
$('.force').each(function (){
a += parseInt($(this).text());
});
$('#total_forces').text(a);
})();
答案 4 :(得分:0)
你可以使用$(“。force”)。length,它返回jQuery对象中元素的数量。