首页 > 解决方案 > 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

标签: javascriptinputaddmicrosoft-edgevar

解决方案


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;
    }

}

推荐阅读