2009-07-31 11 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" के रूप में समाप्त होता है। मैं क्या गलत कर रहा हूं? मैं मुद्रा के रूप में प्रारूपित करना चाहता हूं लेकिन यदि नहीं, कम से कम केवल दो दशमलव संख्या। कोई संकेतक?जावास्क्रिप्ट: यह उत्पादन और बदसूरत स्ट्रिंग क्यों ??? मुझे मुद्रा

धन्यवाद, ~ सैन डिएगो

+0

जो मैं करता हूं वह हमेशा फ्लोट या इनट्स के रूप में गणित करता है, स्रोतों को रखते हुए वे भविष्य के संचालन के लिए होते हैं। मेरे पास एक प्रोटोटाइप कोड किया गया है। मनी (मुद्रासाइन) जिसका उपयोग पूरी तरह से उपयोगकर्ता के अंत तक परिणामों के प्रदर्शन के लिए किया जाता है लेकिन किसी भी गणित परिचालन में नहीं - एक स्ट्रिंग आउटपुट करता है। –

+0

String.prototype.toMoney = function() { वापसी "$" + यह; } var राशि = total.toFixed (2) .toMoney(); $ ("कुल")। पाठ (राशि); स्वीट !!! सही काम करता है! – Hcabnettek

उत्तर

13

.toFixed में सी.के. एक एक स्ट्रिंग को संख्या से वस्तु बदल देता है।

जगह में पूरा मान छोड़ दो और केवल पर .toFixed का उपयोग कर बहुत अंत

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

वैकल्पिक रूप से, स्ट्रिंग एक नंबर करने के लिए वापस परिवर्तित परिवर्तित। jQuery Calculation

कि प्लगइन का उपयोग करना भी परोक्ष रूप से आपकी समस्या का समाधान हो सकता है:

total = total + + tmp; 
+0

++ ने मुझे बचाया, मैं फ्लोट करने के लिए 'टोफिक्स्ड (2)' लगा रहा था, लेकिन इसे स्ट्रिंग में परिवर्तित कर दिया गया और एक '+' के साथ जोड़ने पर मुझे 5 + 5 = 10 के बजाय 5 + 5 = 55 मिला। :) धन्यवाद। – rmagnum2002

1

बस FYI करें, वहाँ jQuery के लिए एक शानदार गणितीय एकत्रीकरण प्लगइन है।

यह उपयोग करने के लिए अपनी स्क्रिप्ट को कम करेगा:

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

आप एक स्ट्रिंग में parseFloat परिवर्तित कर रहे हैं, तो यह कुल में जोड़ने से। एक बार चीजें जोड़े जाने के बाद, केवल अंतिम पंक्ति में .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); 
संबंधित मुद्दे