2016-09-28 187 views
0

我已經爲學校分配了一個使用JS的基本計算器,但無法將結果返回到文本框中。這裏是我的代碼:使用JavaScript將數值插入到文本框中

<form> 
     <input type="textbox" id="val1"> Primo valore 
     <br><br> 
     <input type="textbox" id="val2"> Secondo valore 
     <br><br> 


     <script>  
      function getFloatValue(x) { 
       var xf = parseFloat(x.value) 
       return xf 
      } 
     </script> 

     <script> 
      var a = document.getElementById("val1") 
      var b = document.getElementById("val2") 


      var af = getFloatValue(a) 
      var bf = getFloatValue(b) 


      function calculate(a,b,op) { 
       var r    
       switch (op.value) { 
        case '+': return a+b 
        case '-': return a-b 
        case '/': return a/b 
        case '*': return a*b 
       } 
      } 
     </script> 



     <input type="button" value="+" onclick="document.getElementById('result').value = calculate(af, bf, '+')"> 
     <input type="button" value="-" onclick="document.getElementById('result').value = calculate(af, bf, '-')"> 
     <input type="button" value="/" onclick="document.getElementById('result').value = calculate(af, bf, '/')"> 
     <input type="button" value="*" onclick="document.getElementById('result').value = calculate(af, bf, '*')"> 


     <br><br> 
     <input type="textbox" id="result" value=''> Risultato 
     <br><br> 
     <input type="reset" name="reset" value="Resetta tutto"> 
    </form> 

我做了很多的嘗試,但沒有人以下工作:\

預先感謝您:d

+0

什麼是'af'和'bf'的價值? – Rayon

+0

你正在做'op.value'開關,但字符串沒有'value'屬性。擺脫交換機中的'.value'。 – Li357

+0

@Rayon他們是a和b鑄造的價值浮動,appartently a和b沒有價值,因爲我在將值插入文本框之前執行了這段代碼 – MC23

回答

1
  • 不是傳遞variables,導通元件ID的屬性,以便我們可以使用id
  • op.valueop.value沒有意義,因爲您正在將硬編碼string作爲符號

function getFloatValue(x) { 
 
    return parseFloat(x.value); 
 
} 
 

 

 
function calculate(a, b, op) { 
 
    var a = document.getElementById(a); 
 
    var b = document.getElementById(b); 
 
    a = getFloatValue(a); 
 
    b = getFloatValue(b); 
 
    var r 
 
    switch (op) { 
 
    case '+': 
 
     return a + b 
 
    case '-': 
 
     return a - b 
 
    case '/': 
 
     return a/b 
 
    case '*': 
 
     return a * b 
 
    } 
 
}
<form> 
 
    <input type="textbox" id="val1">Primo valore 
 
    <br> 
 
    <br> 
 
    <input type="textbox" id="val2">Secondo valore 
 
    <br> 
 
    <br> 
 

 
    <input type="button" value="+" onclick="document.getElementById('result').value = calculate('val1', 'val2', '+')"> 
 
    <input type="button" value="-" onclick="document.getElementById('result').value = calculate('val1', 'val2', '-')"> 
 
    <input type="button" value="/" onclick="document.getElementById('result').value = calculate('val1', 'val2', '/')"> 
 
    <input type="button" value="*" onclick="document.getElementById('result').value = calculate('val1', 'val2', '*')"> 
 

 

 
    <br> 
 
    <br> 
 
    <input type="textbox" id="result" value=''>Risultato 
 
    <br> 
 
    <br> 
 
    <input type="reset" name="reset" value="Resetta tutto"> 
 
</form>

+0

我選擇了這個解決方案,因爲我沒有真正得到另一個,但我仍然有錯誤: for'+'我得到:12 [object HTMLInputElement] 其他我得到:NaN 這真的很奇怪,考慮到這個解決方案的代碼片段可以在這裏很好地工作:c – MC23

+0

@ MC23 - 比較你的代碼和我..我沒有使用變量作爲參數,我已經通過'ID' .. – Rayon

+0

是啊現在它的工作原理,我忘了將b更改爲代碼的複製部分,非常感謝!接受了這個答案;) – MC23

-2
function isNumber(n) { 
    return !isNaN(parseFloat(n)) && isFinite(n); 
} 
+1

請添加一些解釋。 – gofr1

+1

這對於已經具有'getFloatValue'功能的OP有什麼幫助? –

相關問題