1

我正在使用以下代码:

<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”。所以在文本字段 id字段中,它应该显示5000 (6000-1000),但它给出的答案是NaN。错误在哪里?

4

2 回答 2

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,否则该数字可能无法解析为小数。有关更多详细信息,请参阅此答案

于 2013-06-18T19:44:40.633 回答
0

NaN 是 Not a Number 的缩写。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),
于 2013-06-18T20:01:49.167 回答