2012-08-14 149 views
1

可能重复:
How to add two strings as if they were numbers?如何从输入标签中总结两个数字?

我写了一个简单的JavaScript代码,我想用两个输入框和两个值加号。这里的代码,我看到结果1520而不是35.

我该如何解决它?

n1 <input type = "number" id = "n1" value=15 /> 
n2 <input type = "number" id = "n2" value=20 /> 

<p>Sum?</p> 
<button onclick="sum()">Try it</button> 
<p id="demo2">Result?? </p> 

<script type="text/javascript"> 
function sum() 
{ 
    var fn, ln; 
    fn = document.getElementById("n1").value; 
    ln = document.getElementById("n2").value; 
    result = (fn+ln); 
    document.getElementById("demo2").innerHTML = result; 
} 
</script> 

回答

5

使用parseInt(),或parseFloat();您遇到的问题是您连接了两个字符串,而不是添加两个数字。 parseInt()(假设它找到的实数)的字符串转换为地址数问题:

function sum() 
{ 
    var fn, ln, result; 
    fn = parseInt(document.getElementById("n1").value, 10); 
    ln = parseInt(document.getElementById("n2").value, 10); 
    result = (fn+ln); 
    document.getElementById("demo2").innerHTML = result; 
} 

value后,将出现, 10是基数,这确保其中数个碱基返回的号码(如果任何)都会。

另请注意,result变量也应该在函数中声明,以避免污染全局范围(并可能在其他地方创建其他变量的问题)。

参考文献:

+0

不应'result'被声明为局部变量吗?或者,完全摆脱它并使用'document.getElementById(“demo2”)。innerHTML =(fn + ln);'。 – jfriend00 2012-08-14 22:06:10

+0

嗯,是的:我有点懒惰。 (*校正*)=) – 2012-08-14 22:07:32

相关问题