2013-05-07 118 views
1

我需要一些简单的计算器,我正在用JavaScript做的帮助。简单的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=""> 

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

+0

你可以把一个破发点中的函数并查看它是否被调用? – Shaded 2013-05-07 15:19:45

+0

开关语句可能会很棘手。它们使用'==='运算符比较值,可以用if/elsif语句替换为使用== ==。试试这个例子:'switch(1){case'1':'success';打破;默认:'失败'; }',那么这个'switch(1){case 1:'success';打破;默认:'失败'; }' – George 2013-05-07 15:22:59

回答

1

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,则会将输入值视为字符串,然后将+解释为字符串连接。

Example Fiddle

+0

我没有说你说@Sirko,它的工作perfeclty!谢谢!! – MoeSzislak 2013-05-07 15:32:31

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

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

设置w后做document.getElementById("resul").value=w;

OR

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

此外,如果奖励积分您验证表单(漂亮的功能对于这种情况是IsNumeric()

+0

我把它变成了一个[jsFiddle](http://jsfiddle.net/3XPSB/1/)并且可以验证它是否有效。但是,检查你的'plus'函数 - 它似乎只是串联'a'和'b'的字符串值。尝试通过'parseInt'或'parseFloat'调用传递这些变量,具体取决于需求。 – Bucket 2013-05-07 15:34:43

+0

你是对的,我用parseInt代替!感谢您的高举! – MoeSzislak 2013-05-07 15:36:51