2009-07-31 3 views
6
var total = 0; 
     $(".amount").each(function() { 
      var value = $(this).val(); 
      value = (value.length < 1) ? 0 : value; 
      var tmp = parseFloat(value).toFixed(2); 
      total += tmp; 
     }); 
     $(".total").text(total); 

일부 텍스트 상자를 반복하여 값을 합산하려고합니다. 이것은 불쾌한 문자열을 만듭니다. 나는 무엇이 없는가 ?? 첫 번째 텍스트 상자에 8을 넣으면 총 텍스트는 "08.000.000.000.00"이됩니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 통화로 포맷하고 싶지만 적어도 10 진수는 2 자리 숫자 이상이어야합니다. 어떤 포인터?자바 스크립트 : 왜 이렇게 생겼고 못생긴 문자열 ??? 통화를 원합니다.

덕분에, 샌디에고

+0

내가하는 경향은 수식을 항상 float 또는 int로 사용하여 소스를 향후 작업과 동일하게 유지하는 것입니다. 그런 다음 최종 사용자에게 결과를 표시하기 위해 순전히 사용되지만 모든 수학 연산에는 표시되지 않는 원형 (currencySign)이 코딩 된 프로토 타입을 갖습니다. 즉 문자열을 출력합니다. –

+0

String.prototype.toMoney = function() { return "$"+ this; } var amount = total.toFixed (2) .toMoney(); $ (". 총"). 텍스트 (금액); 달콤한! 완벽하게 작동합니다! – Hcabnettek

답변

13

.toFixed에서 ~ CK 문자열로 숫자에서 개체를 변환합니다.

장소에서 전체 값을두고 매우, 또는

$(".total").text(total.toFixed(2)); 

을 종료 번호로 다시 문자열로 변환 상기 .toFixed를 사용하여 변환합니다. jQuery Calculation

간접적으로 문제를 해결할 수 플러그인을 사용 :

total = total + + tmp; 
+0

++ 나를 구했는데,'.toFixed (2)'를 float에 적용했지만 문자열로 변환하고'+'를 추가 할 때 5 + 5 = 10 대신 5 + 5 = 55가되었습니다. :) 고맙습니다. – rmagnum2002

1

그냥 참고로, jQuery를위한 훌륭한 수학 집계 플러그인이있다. 다음은 총을 추가, 당신은 문자열로에서는 parseFloat를 변환하는

$('.total').text($('.amount').sum()); 
0

:

그것의 사용은 당신의 스크립트를 감소시킬 것이다. 일단 물건이 추가되면 .toFixed (2) 만 최종 행에 추가하십시오.

var total = 0; 
$(".amount").each(function() { 
    var value = $(this).val(); 
    value = (value.length < 1) ? 0 : value; 
    var tmp = parseFloat(value); 
    total += tmp; 
}); 
$(".total").text(total).toFixed(2);