2010-12-07 3 views
2

동일한 클래스 이름을 가진 일부 HTML 요소를 추가하고 싶습니다.jQuery 각 함수를 사용하여 합계

그래서 코드는 jQuery에서 이와 같을 것입니다.

$(".force").each(function(){ 
    a += parseInt($(this).html()); 
}); 
$("#total_forces").html(a); 

이 코드에서 변수는 전역이어야합니다.

.force 값을 합산하고 each 함수의 합계를 얻는 다른 방법이 있습니까?

+1

우리에게 표시되는 방법에 문제가 있습니까? –

+1

@Surreal 읽기, 그는 전역 변수를 사용하고 싶지 않습니다. –

+0

그는 'a'가 글로벌이라고 말하지만 그것이 문제인지 아니면 효율성, 잘못된 결과인지 등을 명확히하기를 희망합니다. –

답변

11

는, 다음과 같이 사용할 수 있습니다.

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; 
}); 

aaFunc 로컬이며, 글로벌 범위에없는 예 수백만의 하나입니다.

+2

니스. 사실'.html()'도 함수를 받아 들여서'(...)()'을 감쌀 필요가 없습니다. – jensgram

+0

아, 나는 몰랐다. 훨씬 낫다! 또한, 이제 다른 곳에 사용할 수있는 여분의 괄호가 4 개 있습니다. –

+0

그래, 그 빨판 (Ba-dum tisssss)에 균형을 유지하는 것이 중요합니다. – jensgram

0

$ (". force"). length를 사용하면 jQuery 객체의 요소 수를 반환합니다. 아니, 즉

$("#total_forces").html(function() { 
    var a = 0; 
    $(".force").each(function() { 
     a += parseInt($(this).html()); 
    }); 
    return a; 
}); 
+3

I * think * @Raphappa는 값의 합계를 원합니다 ** ** force 요소. –

+0

오 ... 질문이 아주 분명하지 않았다 :) – linkyndy

2

: 당신이 전역 변수를 도입하지 않으려면

jQuery API

1

글로벌하지 않으시겠습니까?

(function() { 
    var a = 0; 
    $('.force').each(function(){ 
     a += parseInt($(this).text()); 
    }); 
    $('#total_forces').text(a); 
})(); 
3

편의상 자주 같은 기능이 필요할 경우 플러그인을 만들 수 있습니다.

예 :http://jsfiddle.net/patrick_dw/2bX3U/1/

(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()); 

EDIT : 전년도 NaN 가드로 변경을 @Šime Vidas으로 언급한다. 또한 parseInt()에 10 진수를 보장하고 누락 된 } 마감을 고쳤습니다.

+1

NaN을 경계하는 것이 좋습니다. –

+0

@ Šime Vidas - 참. 또한 기지 10을 보장해야합니다. 나는 업데이트 할 것입니다. – user113716

관련 문제