【问题标题】:how to sum two numbers from input tag? [duplicate]如何将输入标签中的两个数字相加? [复制]
【发布时间】:2012-08-14 22:01:55
【问题描述】:

可能重复:
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>

【问题讨论】:

    标签: javascript input tags


    【解决方案1】:

    使用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 变量也应在函数中声明,以避免污染全局范围(并可能与其他地方的其他变量产生问题)。

    参考资料:

    【讨论】:

    • 不应该将result 声明为局部变量吗?或者,完全摆脱它并使用document.getElementById("demo2").innerHTML = (fn + ln);
    • 嗯,是的:我有点懒惰。 (更正) =)
    【解决方案2】:
    result =  (parseFloat(fn)+parseFloat(ln)); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      相关资源
      最近更新 更多