2013-05-07 62 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