Search code examples
javascriptinputadditionmicrosoft-edgevar

Adding var's together


I was making a calculator because I was bored and I ran into a problem, when I try to do "x + y" (while x = 4 and y = 2) I get 42 instead of 6, can someone please explain this? (I'm using Edge)

here's the JS:

function myFunction1() {
    var x = document.getElementById("myText1").value;
    var y = document.getElementById("myText2").value;
    var z = document.getElementById("myText3").value;
    var a = x + y;
    if (z == "+") {
    document.getElementById("demo3").innerHTML = a;
    }

    if (z == "-") {
    document.getElementById("demo3").innerHTML = x - y;
    }

    if (z == "*") {
    document.getElementById("demo3").innerHTML = x * y;
    }

    if (z == "/") {
    document.getElementById("demo3").innerHTML = x / y;
    }

}

The HTML:

<p>Your Problem:<br/><br/>
  <input name="myText" id="myText1" type="text" size="7"> <input name="myText" id="myText3" type="text" maxlength="1" size="1"> <input name="myText" id="myText2" type="text" size="7"> = <span id="demo3"></span>
</p>
<p>
  <button onclick="myFunction1()">Calculate</button>
</p>

And the page/result:

enter image description here


Solution

  • That is because you are trying to add strings together. You need to use parseInt to get the number part of the string. More info on parseInt here.

    function myFunction1() {
        var x = parseInt(document.getElementById("myText1").value);
        var y = parseInt(document.getElementById("myText2").value);
        var z = document.getElementById("myText3").value;
        var a = x + y;
        if (z == "+") {
        document.getElementById("demo3").innerHTML = a;
        }
    
        if (z == "-") {
        document.getElementById("demo3").innerHTML = x - y;
        }
    
        if (z == "*") {
        document.getElementById("demo3").innerHTML = x * y;
        }
    
        if (z == "/") {
        document.getElementById("demo3").innerHTML = x / y;
        }
    
    }