2016-09-28 193 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有什么帮助? –

相关问题