निम्नलिखित सामान्य शब्दों में उपयोगी हो सकता है।
सबसे पहले, HTML फ़ॉर्म फ़ील्ड पाठ तक सीमित हैं । यह विशेष रूप से टेक्स्ट बॉक्स पर लागू होता है, भले ही आपने यह सुनिश्चित करने के लिए दर्द लिया हो कि मूल्य एक संख्या जैसा दिखता है ।
दूसरा, जावास्क्रिप्ट, बेहतर या बदतर के लिए, +ऑपरेटर को दो अर्थों के साथ अधिभारित किया है : यह संख्याओं को जोड़ता है, और यह तारों को समेटता है। यह संघनन के लिए एक प्राथमिकता है, इसलिए यहां तक कि एक अभिव्यक्ति 3+'4'को भी सहमति के रूप में माना जाएगा।
तीसरा, जावास्क्रिप्ट यदि संभव हो तो प्रकारों को गतिशील रूप से बदलने का प्रयास करेगा, और यदि इसकी आवश्यकता है। उदाहरण के लिए '2'*'3', दोनों प्रकारों को संख्याओं में बदल देंगे, क्योंकि आप तार को गुणा नहीं कर सकते हैं। यदि उनमें से एक असंगत है, तो आपको NaNएक संख्या मिलेगी ।
आपकी समस्या तब होती है क्योंकि प्रपत्र से आने वाले डेटा को एक स्ट्रिंग के रूप में माना जाता है, और +इसलिए ऐड के बजाय संक्षिप्त करना होगा।
जब एक रूप से माना जाता है कि संख्यात्मक डेटा पढ़ने, आप हमेशा यह माध्यम से पुश करना चाहिए parseInt()या parseFloat(), आप एक पूर्णांक या दशमलव चाहते हैं पर निर्भर करता है।
ध्यान दें कि न तो फ़ंक्शन वास्तव में एक स्ट्रिंग को एक संख्या में परिवर्तित करता है। इसके बजाय, यह स्ट्रिंग को बाईं ओर से दाईं ओर पार्स करेगा जब तक कि यह एक अमान्य संख्यात्मक चरित्र या अंत तक नहीं जाता है और जो स्वीकार किया गया है उसे परिवर्तित करें। के मामले में parseFloat, जिसमें एक दशमलव बिंदु शामिल है, लेकिन दो नहीं।
वैध संख्या के बाद कुछ भी ध्यान नहीं दिया जाता है। वे विफल हो जाते हैं यदि स्ट्रिंग नंबर के रूप में भी शुरू नहीं होती है। तब आपको मिलेगा NaN।
रूपों से संख्याओं के लिए एक अच्छी सामान्य प्रयोजन तकनीक कुछ इस प्रकार है:
var data=parseInt(form.elements['data'].value); // or parseFloat
यदि आप एक अवैध स्ट्रिंग को 0 से दूर करने के लिए तैयार हैं, तो आप उपयोग कर सकते हैं:
var data=parseInt(form.elements['data'].value) || 0;