2015-10-06 6 views
5

जब मैं इसे चला रहा हूं, तो यह NaN देता है। अगर मैं पार्सफ्लैट नहीं करता हूं, तो मुझे 2 तार जोड़े जा रहे हैं। मैं क्या खो रहा हूँ? मैं कहूंगा कि मेरा परिणाम हमेशा एक फ्लोट होना चाहिए?जावास्क्रिप्ट फ़्लोट + फ्लोट = स्ट्रिंग?

function calculate(i) { 
    var result = 0.0; 
    $j(".t" + i + " input").each(function() { 
     var number = $j(this).val(); 
     number = number.replace(",", "."); 

     if (parseFloat(number) != NaN) { 
      result = parseFloat(result); 
      number = parseFloat(number); 
      result += number; 
     } 
    }); 
    console.log(result); 
    return result; 
} 
+0

कोई मूल्य के बराबर 'NaN'। कभी। – spender

+0

एचटीएमएल जोड़ना मदद कर सकता है (और इनपुट फ़ील्ड के मूल्य भी)। –

उत्तर

7

आप नहीं एक नंबर सही ढंग से मान्य नहीं कर रहे हैं। एक नंबर है अगर जाँच करने के लिए NaNisNaN समारोह का उपयोग करें:

if (!isNaN(parseFloat(number))) { ... } 

ध्यान दें कि NaN === NaN रिटर्न false हमेशा।

आप यहाँ इस बारे में और अधिक पढ़ सकते हैं: Why is NaN === NaN false?

यहाँ पूरा कोड है:

function calculate(i) { 
    var result = 0; 
    $j(".t" + i + " input").each(function() { 
     var number = $j(this).val(); 
     number = parseFloat(number.replace(",", ".")); 

     if (isNaN(number)) { 
      return; 
     } 
     result += number; 
    }); 
    console.log(result); 
    return result; 
} 
+0

आपके पास एक टाइपो '(! IsNanN (' होना चाहिए '(! IsNaN ('दाएं? – NewToJS

+0

@ न्यूटोज़ ओह, धन्यवाद! अच्छी आंखें! :-) –

+0

बहुत स्वागत है :) सरल गलती। मुझे कुछ पता था, मुझे इसे नोटिस करने के लिए दो बार देखना पड़ा। – NewToJS

संबंधित मुद्दे