Javascript 给出 NaN 错误

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

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

发生这种情况是因为您正试图减去两个字符串! value 返回输入的字符串,您需要将其解析为数字才能减去它们。请记住指定 parseInt 的基数,否则数字可能无法解析为小数。参见 this answer获取更多详细信息。

关于Javascript 给出 NaN 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17177519/

相关文章:

javascript - "Uncaught ReferenceError: Template is not defined"(路由器、Meteor、Mongo 相同)

javascript - 获取类设置为col-md-7但未设置宽度的div的宽度

javascript - HTML 表单无法正常工作

javascript - 无法编辑请求内的变量

javascript - 在 yii2 中选中复选框后启用字段

javascript - 使用延迟链接循环与多个 ajax 调用

javascript - 如何将选中的复选框值存入数据库?

javascript - 如何安全地显示用户提交的html内容?

javascript - Angular 5 如何设置最小延迟(或超时)?

javascript - JS Array Splice 删除数组中的元素