【问题标题】:Calculator: Get total sum from single input计算器:从单个输入中获取总和
【发布时间】:2026-02-11 13:00:01
【问题描述】:

我目前正在用 jQuery 构建我的第一个计算器,但输入中的值的总和存在一些问题。我不会使用多个输入,因为我想让它简单易用。下面的代码打印NaN,我不明白为什么。

$('body').on('click', '#method-getsum', function() {
    var sum = 0;
    var string = $('input[name="fieldtext-calculate"]').val();

    if(string.length != 0) {
        sum += Number(string);
    }

    alert(sum);
});

我错过了什么吗?你可以在这里看到这一切:http://jsfiddle.net/edgren/QTjWR/(这个演示包含带有eval函数的正确解决方案(我的计算器不是用于实际项目。只是“玩”项目)

提前致谢。

【问题讨论】:

    标签: jquery calculator jquery-calculation


    【解决方案1】:

    当您输入1+2 之类的内容时,您的代码将调用Number("1+2")。这是不正确的,因为Number() 期望单个数字(而不是加法)作为其参数。 它不会为您执行操作解析和解释,您必须自己编写代码。

    如果只是一个玩具项目,请使用eval 而不是Number(在实际项目中避免使用eval,它会产生安全问题)。

    【讨论】:

    • 啊!所以这就是为什么我得到NaN :) 但是当我测试parseInt 它只显示第一个数字(例如输入有50+3,然后它只会显示50)。
    • 您想使用split 或类似的东西将其放入数组中。
    • 非常感谢 :) 我现在知道如何解决我的问题。再次感谢!
    【解决方案2】:

    您可能正在使用关键字作为变量名。尝试将您的代码更改为:

    var fieldText = $('input[name="fieldtext-calculate"]').val();
    
    if(fieldText.length != 0) {
        sum += Number(fieldText );
    }
    

    编辑 没关系,$('input[name="fieldtext-calculate"]').val(); 返回的值是字符串 '7 + 8 + 9'。尝试通过拆分 + 符号来获取不同的值,以将数字放入数组中,然后循环遍历数组。

    【讨论】:

    • 我得到了和以前一样的错误,你可能的解决方案 - NaN :(