Javascript给出NaN错误

Javascript给出NaN错误,javascript,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; } </s

我正在使用以下代码:

<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>
我在totalcost id字段中输入6000作为值,在advpay id字段中输入1000作为值。所以在textfield id字段中,它应该显示5000 6000-1000,但它给出的答案是NaN。错误在哪里

<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>

发生这种情况是因为您正在尝试减去两个字符串!值返回输入的字符串,您需要将其解析为一个数字以减去它们。请记住指定parseInt的基数,否则数字不能解析为十进制。有关更多详细信息,请参阅


发生这种情况是因为您正在尝试减去两个字符串!值返回输入的字符串,您需要将其解析为一个数字以减去它们。请记住指定parseInt的基数,否则数字不能解析为十进制。有关更多详细信息,请参阅。

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),

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),

记住指定parseInt的基数,否则数字将被解析为八进制。我不这么认为…你是对的,它不会被解析为八进制,它基本上会被解析为数字本身。。。。否则,如果数字以零开头,它将被解析为八进制。你现在评论说,我在15分钟前修改了答案。。。更新错误吗?不,你的更正是正确的。我的评论只是想澄清数字何时可以被解释为八进制。请记住指定parseInt的基数,否则数字将被解析为八进制。我不这么认为…你是对的,它不会被解析为八进制,它基本上会被解析为数字本身。。。。否则,如果数字以零开头,它将被解析为八进制。你现在评论说,我在15分钟前修改了答案。。。更新错误吗?不,你的更正是正确的。我的评论只是想澄清数字何时可以被解释为八进制。