Почему я получаю неопределенный результат с помощью своего калькулятора? - PullRequest
0 голосов
/ 25 февраля 2020

Так что я довольно новичок в кодировании, хотел попробовать создать простой калькулятор с html и javascript. Но когда вы нажимаете кнопку «Рассчитать», результат просто возвращается как неопределенный в консоли. Любая помощь будет принята с благодарностью!

html код

<!DOCTYPE html>
<html lang="en">
    <head>

    </head>

    <body>
        <form>
            Value 1: <input type="text" id="value1">
            Value 2: <input type="text" id="value2">
            operator:
            <select id="operator">
                <option value="add">Add</option>
                <option value="min">Minus</option>
                <option value="div">Divide</option>
                <option value="mul">Multiply</option>
            </select>
            <button type="button" onclick="calc()" > Calculate</button>
        </form>

        <div id="Results"></div>

        <script src="Main.js"></script>
    </body>

</html>

А затем javascript код

function calc() 
{
    var a = parseInt(document.querySelector("#value1").value);
    var b = parseInt(document.querySelector("#value2").value);
    var op = document.querySelector("#operator").value;
    var calculate;

    if(op == "add") 
    { 
        calculate == a + b;
    }
    else if(op == "min")
    {
        calculate == a - b;
    }
    else if(op == "div")
    {
        calculate == a / b;
    }
    else if(op == "mul")
    {
        calculate == a * b;
    }   
console.log(calculate);
}

Ответы [ 5 ]

1 голос
/ 25 февраля 2020

Попробуйте использовать просто = вместо двойного равенства в функции вычисления, здесь просто выполняется сравнение

1 голос
/ 25 февраля 2020

Причина, по которой вы получаете неопределенность, заключается в том, что вы используете оператор '==' вместо просто '='.

1 голос
/ 25 февраля 2020

Как следует из комментария Enhinzflep == и === для сравнения в Javascript === проверка типа также. Также у вас есть кнопка отправки в вашей форме?

<form action="/action_page.php" id="form1">
  <label for="fname">First name:</label>
  <input type="text" id="fname" name="fname"><br><br>
  <input type="submit" value="Submit">
</form>

Вы можете получить значения из элементов с помощью document.getElementById ("elementID").

Фрагмент над мной не совсем работа (1x2 = -1). Проверьте правильность методов DOM и HTML Formelements https://www.w3schools.com/html/html_form_elements.asp, например,

1 голос
/ 25 февраля 2020

легко исправить, просто замените == на = внутри ваших операторов if

function calc() 
{
    var a = parseInt(document.querySelector("#value1").value);
    var b = parseInt(document.querySelector("#value2").value);
    var op = document.querySelector("#operator").value;
    var calculate;

    if(op == "add") 
    { 
        calculate = a + b;
    }
    else if(op = "min")
    {
        calculate = a - b;
    }
    else if(op = "div")
    {
        calculate = a / b;
    }
    else if(op = "mul")
    {
        calculate = a * b;
    }   
console.log(calculate);
}
<html lang="en">
    <head>

    </head>

    <body>
        <form>
            Value 1: <input type="text" id="value1">
            Value 2: <input type="text" id="value2">
            operator:
            <select id="operator">
                <option value="add">Add</option>
                <option value="min">Minus</option>
                <option value="div">Divide</option>
                <option value="mul">Multiply</option>
            </select>
            <button type="button" onclick="calc()" > Calculate</button>
        </form>

        <div id="Results"></div>

        <script src="Main.js"></script>
    </body>

</html>
0 голосов
/ 25 февраля 2020

Если вы хотите присвоить значение переменной, вам нужно использовать только один =, подумайте об этом, как если бы вы пытались сделать простое математическое уравнение на листе бумаги, и вы бы сделали следующее A=1+1=2, которое означает, что A является переменной, а 2 - ее значением.

Что касается операторов сравнения здесь, в JavaScript вы должны использовать двойное == или тройное равенство ===.

if(A == 2) {..}  //Means if A's value equals 2
if(A === 2) {..} //Means if A's value equals 2 AND A's data type is the same as 2's

Надеюсь, теперь все предельно ясно.

...