为什么我的计算器会得到未定义的结果?

Why am I getting an undefined result with my calculator?

所以我对编码很陌生,想尝试用 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);
}

简单修复,只需在 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>

您未定义的原因是因为您使用的是“==”运算符而不仅仅是“=”。

正如 enhzflep 的评论所建议的那样,== 和 === 用于 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 for eg

当你想给一个变量赋值时,你只需要使用一个 = 把它想象成你试图在一张纸上做一个简单的数学方程式,你会做以下事情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

希望现在一切都crystal清楚了。

尝试在计算函数上只使用 = 而不是双等号,它只是在此处进行比较