योग की गणना के बजाय दो संख्याओं को जोड़ना उन्हें समाप्‍त करता है


184

मैं दो नंबर जोड़ रहा हूं, लेकिन मुझे सही मूल्य नहीं मिला।

उदाहरण के लिए, 1 + 2रिटर्न 12 कर रहा है और 3 नहीं

इस कोड में मैं क्या गलत कर रहा हूं?

function myFunction() {
  var y = document.getElementById("txt1").value;
  var z = document.getElementById("txt2").value;
  var x = y + z;
  document.getElementById("demo").innerHTML = x;
}
<p>
  Click the button to calculate x.
  <button onclick="myFunction()">Try it</button>
</p>
<p>
  Enter first number:
  <input type="text" id="txt1" name="text1" value="1">
  Enter second number:
  <input type="text" id="txt2" name="text2" value="2">
</p>
<p id="demo"></p>


इनपुट के रूप में आप किस प्रकार के मूल्यों की उम्मीद कर रहे हैं? इंटेगर या दशमलव?
जोरायर

1
एक टेक्स्ट इनपुट वैल्यू स्ट्रिंग होगी और स्ट्रिंग्स हमेशा जोड़-घटाव के बजाय कॉन्टेक्ट करेगी
हांक

1
अभिसरण पर एक अच्छा लेखन इस उत्तर में है
akTed


यदि आपके पास एक है <input type="number">, तो आप .valueAsNumberसीधे इसकी संपत्ति प्राप्त कर सकते हैं।
user4642212

जवाबों:


342

वे वास्तव में तार हैं, संख्या नहीं। एक स्ट्रिंग से एक संख्या का उत्पादन करने का सबसे आसान तरीका है, इसे इसके साथ प्रस्तुत करना +:

var x = +y + +z;

4
जिज्ञासा से बाहर (अपने आप में एक जावास्क्रिप्ट प्रोग्रामर नहीं) (और मुझे लगता है कि यह जवाब में सुधार करेगा), +-प्रिंशक स्ट्रिंग्स के साथ क्या करता है ?
सेबस्टियन मच

30
उपरोक्त कोड थोड़ा विचित्र है और कम अनुभवी डेवलपर्स को भ्रमित करेगा। कोड '+' के उपयोग को भ्रमित करने के लिए JSLint को भी विफल कर देगा।
जोरायर


10
@AKTed: वास्तव में मैं इसे अपने उत्तर के भीतर थोड़ा वर्णन करने के लिए elclanrs को भड़काना चाहता था । निश्चित रूप से मैं स्वयं Google खोज करने में असमर्थ हूं; लेकिन यह (imo) उत्तर की गुणवत्ता में सुधार करेगा, विशेष रूप से क्योंकि स्ट्रिंग रूपांतरण के लिए उपसर्ग + + का उपयोग करना अन्य प्रोग्रामिंग भाषाओं में बहुत असामान्य है और न्यूब्यू को भ्रमित कर सकता है। (हालांकि, लिंक साझा करने के लिए धन्यवाद)
सेबस्टियन मच

2
मैं इस शॉर्टकट का उपयोग करने से किसी को भी हतोत्साहित करूंगा। मुझे पता है कि वास्तव में एक संख्या में एक स्ट्रिंग को पार्स करने के लिए अधिक कोड की आवश्यकता होती है लेकिन कम से कम कोड स्पष्ट रूप से इरादे से मेल खाता है।
सी केली


29

आपको parseInt()स्ट्रिंग्स को वापस संख्या में बदलने के लिए javaScript की विधि का उपयोग करने की आवश्यकता है । अभी वे तार हैं इसलिए दो तारों को जोड़कर उन्हें बदल दिया जाता है, यही कारण है कि आपको "12" मिल रहा है।


1
मुझे यकीन नहीं है कि parseInt()यहां सबसे अच्छा विकल्प दिया गया है कि ओपी फ़ंक्शन दो उपयोगकर्ता-दर्ज "संख्या" जोड़ रहा है, दो "पूर्णांक" नहीं।
nnnnnn

2
@nnnnnn मुझे लगता है, कि आसानी से संशोधन किया जा सकता parseFloatहै ओपी को अधिक इनपुट प्रदान करना चाहिए।
योशी

1
@ योशी - हाँ, हाँ, लेकिन यह दिया जा सकता है कि जवाब वास्तव में कहीं भी नहीं कहता है कि parseInt()केवल पूर्णांक लौटाता है, और किसी भी parseInt()"quirks" की व्याख्या नहीं करता है - जो उपयोगकर्ता द्वारा दर्ज डेटा के साथ एक समस्या हो सकती है - मैं यह उल्लेख के लायक था। (मैं वास्तव में या नीचे कुछ भी नहीं था।)
nnnnnn

हां, मैंने एक धारणा बनाई थी कि इनपुट पूर्णांक होगा क्योंकि उन्होंने 1 + 2 का उदाहरण दिया है, लेकिन आप सही हैं - पार्सफ्लोअट () बेहतर हो सकता है अगर वे सिर्फ 'संख्या' हैं।
मितिम

22

ParseInt (...) का उपयोग करें लेकिन सुनिश्चित करें कि आप एक मूलांक मान निर्दिष्ट करें; अन्यथा आप कई बगों में भाग लेंगे (यदि स्ट्रिंग "0" से शुरू होती है, तो मूलांक अष्टक / 8 आदि है)।

var x = parseInt(stringValueX, 10);
var y = parseInt(stringValueY, 10);

alert(x + y);

उम्मीद है की यह मदद करेगा!


5
मुझे यकीन नहीं है कि parseInt()यहां सबसे अच्छा विकल्प दिया गया है कि ओपी फ़ंक्शन दो उपयोगकर्ता-दर्ज "संख्या" जोड़ रहा है, दो "पूर्णांक" नहीं।
nnnnnn

1
जब तक वह फ्लोटिंग पॉइंट वैल्यूज़ की उम्मीद नहीं करता, मुझे लगता है कि इस दृष्टिकोण का उपयोग करना अभी भी बहुत अच्छा है।
जोरावर

1
यह अब ES6 में कोई समस्या नहीं है। मूलांक को सुरक्षित रूप से छोड़ा जा सकता है। parseInt("012")ठीक काम करता है, 12. लौटना बेशक, आपको अभी भी चीजों से सावधान रहना होगा [1,2].map(parseInt)

6

बस एक साधारण प्रकार की कास्टिंग विधि जोड़ें क्योंकि इनपुट पाठ में लिया गया है। निम्न का उपयोग करें:

    var y = parseInt(document.getElementById("txt1").value);
    var z = parseInt(document.getElementById("txt2").value);
    var x = y + z;

6

निम्नलिखित सामान्य शब्दों में उपयोगी हो सकता है।

  • सबसे पहले, 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;


4

यह संख्या योग नहीं करेगा; इसके बजाय यह इसे संक्षिप्त करेगा:

var x = y + z;

आपको करने की जरूरत है:

var x = (y)+(z);

संख्याओं पर कार्रवाई निर्दिष्ट करने के लिए आपको parseInt का उपयोग करना होगा। उदाहरण:

var x = parseInt(y) + parseInt(z); [final soulution, as everything us]

इसके लिए सही उत्तर होना चाहिए additionऔर subtractionस्वीकार नहीं किया जाना चाहिए ।
MR_AMDEV

3

इस कोड में दोनों चर हैं! इसे अपने फंक्शन में लगाएं

var y = parseInt(document.getElementById("txt1").value);
var z = parseInt(document.getElementById("txt2").value);
var x = (y +z);
document.getElementById("demo").innerHTML = x;`

1

आपको अतिरिक्त चरण के दौरान टाइप रूपांतरण याद आ रहा है ...
var x = y + z;होना चाहिएvar x = parseInt(y) + parseInt(z);

 <!DOCTYPE html>

 <html>
 <body>
  <p>Click the button to calculate x.</p>
  <button onclick="myFunction()">Try it</button>
  <br/>
  <br/>Enter first number:
  <input type="text" id="txt1" name="text1">Enter second number:
  <input type="text" id="txt2" name="text2">
  <p id="demo"></p>
 <script>
    function myFunction() 
    {
      var y = document.getElementById("txt1").value;
      var z = document.getElementById("txt2").value;
      var x = parseInt(y) + parseInt(z);
      document.getElementById("demo").innerHTML = x;
    }
 </script>
 </body>
 </html>

1
  <input type="text" name="num1" id="num1" onkeyup="sum()">
  <input type="text" name="num2" id="num2" onkeyup="sum()">
  <input type="text" name="num2" id="result">

  <script>
     function sum()
     {

        var number1 = document.getElementById('num1').value;
        var number2 = document.getElementById('num2').value;

        if (number1 == '') {
           number1 = 0
           var num3 = parseInt(number1) + parseInt(number2);
           document.getElementById('result').value = num3;
        }
        else if(number2 == '')
        {
           number2 = 0;
           var num3 = parseInt(number1) + parseInt(number2);
           document.getElementById('result').value = num3;
        }
        else
        {
           var num3 = parseInt(number1) + parseInt(number2);
           document.getElementById('result').value = num3;
        }

     }
  </script>

3
जवाब के साथ कुछ स्पष्टीकरण जोड़ें कि यह उत्तर ओपी को वर्तमान मुद्दे को ठीक करने में कैसे मदद करता है
ρяєρ withя K

1

यह बहुत सरल है:

<html>

    <body>
        <p>Click the button to calculate x.</p>
        <button onclick="myFunction()">Try it</button>
        <br/>
        <br/>Enter first number:
        <input type="text" id="txt1" name="text1">Enter second number:
        <input type="text" id="txt2" name="text2">
        <p id="demo"></p>

        <script>
            function myFunction() {
                var y = document.getElementById("txt1").value;
                var z = document.getElementById("txt2").value;
                var x = +y + +z;
                document.getElementById("demo").innerHTML = x;
            }
        </script>
    </body>
</html>

1

इसे इस्तेमाल करे:

<!DOCTYPE html>
<html>

    <body>
        <p>Add Section</p>

        <label>First Number:</label>
        <input id="txt1"  type="text"/><br />
        <label>Second Number:</label>
        <input id="txt2"  type="text"/><br />

        <input type="button" name="Add" value="Add" onclick="addTwoNumber()"/>
        <p id="demo"></p>

        <script>
            function myFunction() {
                document.getElementById("demo").innerHTML = Date();
            }

            function addTwoNumber(){
                var a = document.getElementById("txt1").value;
                var b = document.getElementById("txt2").value;

                var x = Number(a) + Number(b);
                document.getElementById("demo").innerHTML = "Add Value: " + x;
            }
        </script>
    </body>
</html>

1
    <head>
        <script type="text/javascript">
            function addition()
            {
                var a = parseInt(form.input1.value);
                var b = parseInt(form.input2.value);
                var c = a+b
                document.write(c);
            }
        </script>
    </head>

    <body>
        <form name="form" method="GET">
        <input type="text" name="input1" value=20><br>
        <input type="text" name="input2" value=10><br>
        <input type="button" value="ADD" onclick="addition()">
        </form>
    </body>
</html>

3
एसओ में आपका स्वागत है! क्या आप कृपया थोड़ा और समझा सकते हैं? आपका उत्तर केवल कोड है, इसलिए यह काम कर सकता है, लेकिन प्रश्नकर्ता (या अन्य आगंतुक!) समझ नहीं सकते हैं कि यह क्यों काम करता है।
चिलियन

1

यदि हमारे पास दो इनपुट फ़ील्ड हैं, तो इनपुट फ़ील्ड से मान प्राप्त करें, और फिर उन्हें जावास्क्रिप्ट का उपयोग करके जोड़ें।

$('input[name="yourname"]').keyup(function(event) {
    /* Act on the event */
    var value1 = $(this).val();
    var value2 = $('input[name="secondName"]').val();
    var roundofa = +value2+ +value1;

    $('input[name="total"]').val(addition);
});

0

आप नियमित रूप से अभिव्यक्ति के साथ एक प्रीचेक कर सकते हैं जैसे वे संख्याएं हैं

function myFunction() {
    var y = document.getElementById("txt1").value;
    var z = document.getElementById("txt2").value;
    if((x.search(/[^0-9]/g) != -1)&&(y.search(/[^0-9]/g) != -1))
      var x = Number(y)+ Number(z);
    else
      alert("invalid values....");
    document.getElementById("demo").innerHTML = x;
  }

नियमित अभिव्यक्तियों के बजाय आप सिर्फ parseXX का उपयोग कर सकते हैं और NaN रिटर्न की जांच कर सकते हैं।
हांक

उपयोगकर्ता द्वारा दर्ज किए गए डेटा को मान्य करना हमेशा एक अच्छी योजना है, लेकिन आपको अभी भी इनपुट स्ट्रिंग्स को संख्यात्मक रूप में बदलने की आवश्यकता है इससे पहले कि आप एक संख्यात्मक जोड़ कर सकें।
nnnnnn

0

parseFloatइसका उपयोग स्ट्रिंग को दशमलव मान सहित संख्या में बदल देगा।

 function myFunction() {
      var y = document.getElementById("txt1").value;
      var z = document.getElementById("txt2").value;
      var x = parseFloat(y) + parseFloat(z);
      document.getElementById("demo").innerHTML = x;
    }


<p>
  Click the button to calculate x.
  <button onclick="myFunction()">Try it</button>
</p>
<p>
  Enter first number:
  <input type="text" id="txt1" name="text1" value="1">
  Enter second number:
  <input type="text" id="txt2" name="text2" value="2">
</p>
<p id="demo"></p>

0

आप यह भी लिख सकते हैं: var z = x - -y; और आपको सही उत्तर मिलता है।

<body>

<input type="text" id="number1" name="">
<input type="text" id="number2" name="">
<button type="button" onclick="myFunction()">Submit</button>

<p id="demo"></p>

    <script>
    function myFunction() {
        var x, y ;

        x = document.getElementById('number1').value;
        y = document.getElementById('number2').value;

        var z = x - -y ;

        document.getElementById('demo').innerHTML = z;
    }
    </script>
</body>

0

यहाँ फ़ंक्शन में चर को पार्स करके आपका कोड जाता है।

<html>
  <body>
    <p>Click the button to calculate x.</p>
    <button onclick="myFunction()">Try it</button>
    <br/>
    <br/>Enter first number:
    <input type="text" id="txt1" name="text1">
    <br>Enter second number:
    <input type="text" id="txt2" name="text2">
    <p id="demo"></p>
    <script>
      function myFunction() {
        var y = parseInt(document.getElementById("txt1").value);
        var z = parseInt(document.getElementById("txt2").value);
        var x = y + z;
        document.getElementById("demo").innerHTML = x;
      }
    </script>
  </body>
</html>

उत्तर

यहां छवि विवरण दर्ज करें


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.