2015-04-05 28 views
0

我创建了一个简单的程序中,它需要加1和3,并显示4,但它让我13这是我的计划:为什么我的JavaScript程序不是将它转换为整数而不是字符串?

<html> 
    <head> 
     <style> 
     </style> 
     <script type="text/javascript"> 
     function calculate(){ 

      a = document.getElementById('num1').value; 
      b = document.getElementById('num2').value; 
      document.getElementById('result').innerHTML = a + b; 
     } 
     </script> 
    </head> 
    <body> 
     <input id='num1' value="1"/> 
     <input id='num2' value='3'/> 
     <p id='result'></p> 
     <button onclick="calculate()">Calculate</button> 
    </body> 
</html> 

我现在该怎么办?

+1

很明显,你的代码是连接两个变量而不是按照预期添加的。串联是对字符串对象执行的操作,而添加是对数字对象执行的操作。你认为'string'变量需要怎么处理它们作为数字? – 2015-04-05 15:20:10

+2

我建议在分配值后声明您的变量,我的意思是:var a = ... – xsami 2015-04-05 15:26:59

回答

2

这是因为value属性返回String。您需要将其转换为Number

虽然有一个快捷方式,但使用+一元运算符。您也可以将此字符串包装为Number,如Number(a) + Number(b)

a = +document.getElementById('num1').value; 
b = +document.getElementById('num2').value; 
2

您必须转换为整数。看看这个代码。

function calculate(){ 

     a = parseInt(document.getElementById('num1').value, 10); 
     b = parseInt(document.getElementById('num2').value, 10); 
     document.getElementById('result').innerHTML = a + b; 
    } 
1

试着这样做:

document.getElementById('result').innerHTML = parseInt(a) + parseInt(b); 

的原因是因为您a和b是字符串,你需要先再转换为数字。

+0

忽略基数是个坏主意。 – 2015-04-05 15:50:49

相关问题