Javascript给出NaN错误

时间:2013-06-18 19:43:07

标签: javascript

我使用以下代码:

<script type="text/javascript">
function minus(){
var t=document.getElementById("totalcost").value;
var u=document.getElementById("advpay").value;  
var set=(t-u);
document.getElementById("textfield").value=set;
return true;
}
</script>

我输入“6000”作为 totalcost id字段中的值和 advpay id字段中的“1000” 。所以在 textfield id 字段中,它应显示 5000(6000-1000) ,但它的回答为 NaN 即可。错误在哪里?

2 个答案:

答案 0 :(得分:5)

<script type="text/javascript">
function minus() {
    var t = parseInt(document.getElementById("totalcost").value, 10),
        u = parseInt(document.getElementById("advpay").value, 10),
        set = (t - u);
    document.getElementById("textfield").value = set;
    return true;
}
</script>

这种情况正在发生,因为你试图减去两个字符串! value返回输入的字符串,您需要将其解析为数字以便减去它们。请记住指定parseInt的基数,否则可以将数字解析为小数。有关详细信息,请参阅this answer

答案 1 :(得分:0)

NaN缩写为非数字。 NaN将是包含任何内容而不是数字(字符串,布尔值,对象)的任何计算的结果。在你的情况下,计算是通过使用2个字符串进行的,这就是它返回NaN的原因。在进行计算之前,您必须将值转换为数字。

您可以使用以下代码转换值:

示例1:

 var t = +document.getElementById("totalcost").value;
 u = +document.getElementById("advpay").value;

示例2(如@LightStyle建议):

 var t = parseInt(document.getElementById("totalcost").value, 10),
 u = parseInt(document.getElementById("advpay").value, 10),