2009-07-31 31 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); 

Tôi đang cố gắng lặp qua một số hộp văn bản và tổng hợp các giá trị của chúng. Điều này tạo ra một chuỗi khó chịu. Tôi đang thiếu gì ?? nếu tôi đặt 8 trong tổng văn bản hộp văn bản đầu tiên kết thúc là "08.000.000.000.00". Tôi đang làm gì sai? Tôi muốn định dạng dưới dạng tiền tệ nhưng nếu không, ít nhất chỉ là hai số thập phân. Bất kỳ con trỏ?Javascript: tại sao điều này tạo ra và chuỗi xấu xí ??? Tôi muốn tiền tệ

Cảm ơn, ~ ck ở San Diego

+0

những gì tôi có xu hướng làm là luôn làm toán như phao hoặc ints, giữ nguyên các nguồn như chúng dành cho bất kỳ hoạt động nào trong tương lai. Sau đó tôi có một mẫu mã hóa .money (currencySign) được sử dụng hoàn toàn để hiển thị kết quả cho người dùng cuối nhưng không phải trong bất kỳ hoạt động toán học nào - xuất ra một chuỗi. –

+0

String.prototype.toMoney = function() { trả về "$" + số tiền này; } số tiền var = total.toFixed (2) .toMoney(); $ (". Tổng số"). Văn bản (số tiền); Ngọt ngào !!! Hoạt động hoàn hảo! – Hcabnettek

Trả lời

13

.toFixed chuyển đổi đối tượng từ một số thành một chuỗi.

Để lại toàn bộ giá trị tại chỗ và chỉ chuyển đổi sử dụng .toFixed vào cuối,

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

Ngoài ra, chuyển đổi chuỗi lại thành một số.

total = total + + tmp; 
+0

++ lưu tôi, tôi đã áp dụng '.toFixed (2)' để float nhưng chuyển đổi nó thành chuỗi và khi thêm với một '+' tôi nhận được 5 + 5 = 55 thay vì 5 + 5 = 10. :) Cảm ơn bạn. – rmagnum2002

1

Just FYI, có một plugin tuyệt vời toán học tập cho jQuery: jQuery Calculation

Sử dụng plugin mà cũng có thể gián tiếp giải quyết vấn đề của bạn.

Đó là việc sử dụng sẽ làm giảm kịch bản của bạn:

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

Bạn đang chuyển đổi các parseFloat vào một chuỗi, sau đó thêm nó vào tổng số. Chỉ thêm .toFixed (2) vào dòng cuối cùng, một khi mọi thứ đã được thêm vào.

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); 
Các vấn đề liên quan