首页 > 解决方案 > JavaScript中的变量和函数问题

问题描述

我对 JS 有一点问题。我想制作一个简单的脚本来计算像 X^2+X+Q 这样的二年级方程的结果。问题是我不知道如何操作变量,所以我没有得到我想要的结果。这是代码。

var a, b, c;

function input_a(a) {
    a = prompt("Enter your a");
}

function input_b(b) {
    b = prompt("Enter your b");
}

function input_c(c) {
    c = prompt("Enter your c");
}

function calculate(a, b, c) {
    var delta = (b*b) - (4*a*c);
    if (delta < 0) {
        document.getElementById("result").innerHTML = "Impossible, delta is < 0";
    } else if (delta > 0) {
        document.getElementById("result").innerHTML = delta;
    } else {
        document.getElementById("result").innerHTML = "ERROR";
    }
}
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

.header {
    background-color: rgb(70, 69, 69);
    width: 100%;
    display: inline-block;
    text-align: center;
    padding: 30px 0px;
}

.title {
    color: rgb(255, 255, 255);
}

.example {
    color: white;
}

.button_wrap {
    text-align: center;
    background-color: rgb(230, 174, 34);
    width: auto;
}

.button {
    display: inline-block;
    background-color: rgb(70, 69, 69);
    width: auto;
    height: auto;
    padding: 20px;
    margin: 10px 30px;
}

.start {
    display: block;
    background-color: rgb(70, 69, 69);
    margin: 15px auto 0px auto;
    padding: 20px;
}

.result_wrapper {
    text-align: center;
    padding-top: 100px;
    background-color: rgb(187, 141, 25);
    width: auto;
}

#result {
    display: inline-block;
    width: auto;
    height: auto;
    background-color: rgb(70, 69, 69);;
    padding: 20px;
    margin: 10px;
}
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>Equazioni</title>
    <link rel="stylesheet" href="style.css">
    <script src="script.js"></script>
</head>

<body>
    <header class="header">
        <h1 class="title">EQUATIONS</h1> <br>
        <h2 class="example">X^2  +-  X  +-  Q</h2>
    </header>

    <div class="button_wrap">
        <button onclick="input_a()" class="button">INSERT YOUR A</button>
        <button onclick="input_b()" class="button">INSERT YOUR B</button>
        <button onclick="input_c()" class="button">INSERT YOUR C</button>
        <button onclick="calculate()" class="start">CALCULATE</button>
    </div>

    <div class="result_wrapper">
        <p id="result"></p>
    </div>

</body>

</html>

我想问用户a、b和c,然后应用数学规则计算delta(然后我会计算X1和X2,但我还没有实现)。但由于某种原因,它不起作用。我前几天开始学习JS,所以可能这是一个愚蠢的错误,但我不知道如何修复它。我对 C++ 之类的语言非常了解,但我从未使用过 JS。

脚本实际上打印的是ERROR,所以delta必须等于0。如果是,则表示在计算它的过程中我出错了。

标签: javascript

解决方案


该脚本实际上打印了 ERROR,因此 delta 必须等于 0。

这个结论根本不正确。它也可以是null, 或, 或在这种情况下undefined...... NaN不要假设,验证:

console.log(delta);

原因是你重新声明了局部变量,而从未定义它们。

这个:

function input_a(a)

应该是这样的:

function input_a()

重复所有其他功能。这是因为拥有这些参数意味着每当您在函数中引用该变量时,您都在引用传递给它的变量,而不是全局变量。而且您不会将任何内容传递给函数,而是尝试使用全局变量。


推荐阅读