【问题标题】:Simple Javascript I don't know how to put the functions in the if-else statements简单的 Javascript 我不知道如何将函数放在 if-else 语句中
【发布时间】:2017-03-15 22:09:55
【问题描述】:

嗨,请帮帮我,我的代码几乎完成了,但它只触发了最后一个按钮,即平方根选项。它应该看起来像一个计算器,它会打开一个带有文本框的弹出按钮,您可以在其中输入数字。我无法触发正确的操作。

<input type="button" value="Add" onclick="calculate('addition')">
<input type="button" value="Subtract" onclick="calculate('subtraction')">
<input type="button" value="Multiply" onclick="calculate('multiplication')">
<input type="button" value="Divide" onclick="calculate('division')">
<input type="button" value="Modulo" onclick="calculate('modulo')">
<input type="button" value="Pow" onclick="calculate('pow')">
<input type="button" value="Factorial" onclick="calculate('factorial')">
<input type="button" value="Sqrt" onclick="calculate('sqrt')">


<script>
function calculate(addition)    {
    var x= prompt("What is your first number?", "");
    var y= prompt("What is your second number?", "");
    var z= parseInt(x)+parseInt(y);
    document.getElementById("z").value = z;
    }
function calculate(subtraction) {
    var x= prompt("What is your first number?", "");
    var y= prompt("What is your second number?", "");
    var z= parseInt(x)-parseInt(y);
    document.getElementById("z").value = z;
}

function calculate(multiplication)  {
    var x= prompt("What is your first number?", "");
    var y= prompt("What is your second number?", "");
    var z= parseInt(x)*parseInt(y)
    document.getElementById("z").value = z;
}

function calculate(division)    {
    var x= prompt("What is your first number?", "");
    var y= prompt("What is your second number?", "");
    var z= parseInt(x)/parseInt(y)
    document.getElementById("z").value = z;
}
function calculate(modulo)  {
    var x= prompt("What is your first number?", "");
    var y= prompt("What is your second number?", "");
    var z= parseInt(x)%parseInt(y)
    document.getElementById("z").value = z;
}

function calculate(pow) {
    var x= prompt("What is your first number?", "");
    var y= prompt("Raised to?", "");
    var i=1
    while (i<(parseInt(y)+1))   {
        var z= parseInt(x)*parseInt(x)
        i=parseInt(i)+1
        }
    document.getElementById("z").value = z;
}
function calculate(factorial)   {
    var x= prompt("What is your number?", "");
    var i=1
    var m=1
    while (m<(parseInt(x))) {
        i=parseInt(i)*((parseInt(m)+1))
        m=parseInt(m)+1
    }
    document.getElementById("z").value = i;
}
function calculate(sqrt)    {
    var x= prompt("What is your number?", "");
    i=1
    while (i%parseInt(x)!=0)    {
        z=(parseInt(x)%i)
        i=parseInt(i)+1
    }
    z=Math.sqrt(parseInt(x))
    document.getElementById("z").value = z;
}


</script>

【问题讨论】:

  • 呃,您多次定义该函数。函数名必须是唯一的......你应该有function calculate(type) { if (type=='addition') { ... } else if (.....)-type 的东西,很可能。如果你做过任何基本的调试,比如检查浏览器的错误控制台,你就会被告知这个问题。

标签: javascript html json loops if-statement


【解决方案1】:

基本上你是在重新声明calculate。这不是必需的,但您需要评估参数。根据内容进行计算。

function calculate(operator) {
    var x, y, z;

    if (operator === 'addition') {
        x = parseInt(prompt("What is your first number?", ""), 10),
        y = parseInt(prompt("What is your second number?", ""), 10),
        z = x + y;
    } else if (operator === 'subtraction') {
        x = parseInt(prompt("What is your first number?", ""), 10),
        y = parseInt(prompt("What is your second number?", ""), 10),
        z = x - y;
    }
    document.getElementById("z").value = z;
}

对于多个比较,您可以使用switch 运算符。

switch (operator) {
    case 'addition':
        z = x + y;
        break; // to stop more testing
    case 'subtraction':
        z = x - y;
        break;
    // other cases
    default:
        z = 'unknown operator';
}

【讨论】:

  • 所以在 //do something 部分,我应该插入实际操作 (+ - * /) 对吗?抱歉,我是新手。
【解决方案2】:

JS 中没有基于传递参数的函数重载。您可以编写一次计算函数并在其中处理不同的情况。

function calculate(op) {
  if (op == 'addition')//do addition
  else if (op == 'subtraction')//do subtraction
  ...
}

【讨论】:

  • 非常感谢大家帮助我!我的代码现在可以使用了!谢谢谢谢谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多