繁体   English   中英

带 Switch 的简单 JavaScript 计算器

[英]Simple javascript calculator with Switch

我需要一些我正在用 javascript 做的简单计算器的帮助。

js代码如下(老师要我用4个函数,每种操作):

<script>

            function plus(a,b) {
                return (a + b);
            }

            function minus(a,b) {
                return (a - b);
            }

            function multiply(a,b) {
                return (a * b);
            }

            function divide(a,b) {
                return (a / b);
            }

            function calc() {

                var x = document.getElementById("oper1").value;
                var y = document.getElementById("operx").value;
                var z = document.getElementById("oper2").value;
                var w = document.getElementById("resul").value;

                switch (y) {
                    case '0':
                        w = plus(x, z);
                        break;

                    case '1':
                        w = minus(x, z);
                        break;

                    case '2':
                        w = multiply(x, z);
                        break;

                    case '3':
                        w = divide(x, z);
                        break;

                    default:
                        w = "Don't really know..";
                }

            }

</script>
<input type="text" id="oper1" value="">

<select id="operx">
    <option value="0">SUMAR</option>
    <option value="1">RESTAR</option>
    <option value="2">MULTIPLICAR</option>
    <option value="3">DIVIDIR</option>
</select>

<input type="text" id="oper2" value="">
<input type="button" onClick="calc();" value="=">
<input type="text" id="resul" value="">

我的代码不起作用,实际上没有任何响应,我没有看到任何错误,所以我可以调试......如果你在这里看到我的错误,有人能告诉我吗? 我已经尝试了数百种组合,但没有调试控制台或其他东西。

var w = document.getElementById("resul").value;

这不允许您设置 W 然后让<input/>更新本身。 您可以改为执行以下操作之一。

设置wdocument.getElementById("resul").value=w;

要么

var w = document.getElementById("resul");
w.value=etc.

此外,如果您验证表单,则IsNumeric()奖励积分(这种情况下的好函数是IsNumeric()

JavaScript 不会以您打算使用它们的方式使用指针。 您必须明确地将结果写回输出字段:

function calc(){
  // most of your stuff
  // just replace the var w = document ... line with just
  var w;

  // your other code

  document.getElementById("resul").value = w;
}

此外,您应该使用parseInt()parseFloat()将输入值解析为数字。 例如,如果您不这样做,JavaScript 会将输入值视为字符串,然后将+解释为字符串连接。

示例小提琴

 // You can simply add button to call a function like this

 <button onclick="Calculator()">=</button>

functon Calculator(){
 var x = document.getElementById("oper1").value;
 var y = document.getElementById("operx").value;
 var z = document.getElementById("oper2").value;
           
switch(y){
case "+":
document.getElementById("resul") = x + z;
break;
case "-":
document.getElementById("resul") = x - z;
break;

case "*":
document.getElementById("resul") = x * z;
break;

case "/":
document.getElementById("resul") = x / z;
break;

case "%":
document.getElementById("resul") = x % z;
break;

Default:
alert("Choose the operator");

}
}

你的程序应该是这样的

 <script> function plus(a,b) { return (a + b); } function minus(a,b) { return (a - b); } function multiply(a,b) { return (a * b); } function divide(a,b) { return (a / b); } function calc() { var w; var x = document.getElementById("oper1").value; var y = document.getElementById("operx").value; var z = document.getElementById("oper2").value; //document.getElementById("resul").innerHTML=w; switch (y) { case '0': w = plus(x, z); document.getElementById("resul").innerHTML=w; break; case '1': w = minus(x, z); document.getElementById("resul").innerHTML=w; break; case '2': w = multiply(x, z); document.getElementById("resul").innerHTML=w; break; case '3': w = divide(x, z); document.getElementById("resul").innerHTML=w; break; default: w = "Don't really know.."; } } </script> <input type="text" id="oper1" value=""> <select id="operx"> <option value="0">SUMAR</option> <option value="1">RESTAR</option> <option value="2">MULTIPLICAR</option> <option value="3">DIVIDIR</option> </select> <input type="text" id="oper2" value=""> <input type="button" onClick="calc();" value="Solve"><br/><br/> <p id="resul">The answer is : </p>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM