2015-03-12 2 views
0

Я пытаюсь сделать небольшой калькулятор с Javascript, но два числа не добавляются и не вычитаются, он просто конкатенируется, например, если я хочу добавить 2 + 2, он выдает «22», а не 4., вот код:калькулятор с использованием кода javascript

<!DOCTYPE html> 
    <html> 
    <head> 
    <title>Hello!</title> 
    </head> 
    <script> 

    function getResult() 
    { 
    var result1 = document.getElementById("number1").value; 
    var result3 = document.getElementById ("op1").value; 

    var result2 = document.getElementById("number2").value; 

    calculate (result1,result3,result2); 
    } 

    function calculate(num1,operator,num2) 
    { 

    if (operator== '+') 
    { 
    var res1 = num1+num2; 
    alert(res1); 

    } 
    else if (operator== '-') 
    { 
    var res2 = num1-num2; 
    alert(res2); 

    } 
    else if (operator== '*') 
    { 
    var res3 = num1*num2; 
    alert(res3); 

    } 
    else if (operator== '/') 
    { 
    var res4 = num1/num2; 
    alert(res4); 
    } 

    else 
    { 
    alert("Nothing from above!"); 
    } 

    } 
    </script> 

    <body> 
    <form action="get" method="#"> 
    <input type="text" name="text1" value="" id="number1" /> 
    <input type="text" name="text2" value="" id="number2" /> <br /> 

    <input type="button" name="o1" value="+" id="op1" onclick="getResult();"/> 
    <input type="button" name="o2" value="-" id="op2" onclick="getResult();"/> 
    <input type="button" name="o3" value="*" id="op3" onclick="getResult();"/> 
    <input type="button" name="o4" value="/" id="op4" onclick="getResult();"/>  

<input type="button" name="calc" value="Calculate" onclick="getResult();"/> 
</form> 

</body> 
</html> 

ответ

1

В JavaScript (и во многих других языках программирования), когда вы добавляете две строки вместе, вы получаете конкатенацию их значений. В настоящее время ваша программа обрабатывает входные данные формы как строки, но вы можете использовать встроенную функцию parseInt для извлечения целых чисел из строк.

Попробуйте следующее:

function getResult() { 
    var result1 = parseInt(document.getElementById("number1").value); 
    var result3 = parseInt(document.getElementById ("op1").value); 
    var result2 = parseInt(document.getElementById("number2").value); 

    calculate (result1,result3,result2); 
} 
0

применять parseFloat, пример

var res1 = parseFloat(num1)+parseFloat(num2); 
0

это происходит из-за конкатенации. Пожалуйста, измените код на var res1 = parseInt(num1) + parseInt(num2);

0

Вы должны отдать свой ВАР в Интс, прежде чем делать какие-либо математику с ними. По умолчанию они считываются как строки. result1 = parseInt(result1)

+0

Я ошибочно предположил, что javascript имеет методы; видимо, это не так .... –

Смежные вопросы