减法在 JS 中工作,但加法在 JS 中不起作用

Posted

技术标签:

【中文标题】减法在 JS 中工作,但加法在 JS 中不起作用【英文标题】:Subtraction working in JS but Addition is not working in JS 【发布时间】:2022-01-11 20:34:07 【问题描述】:

我似乎无法弄清楚为什么减法在我的代码中起作用,但是当我将减法符号更改为加法符号时,我收到控制台错误:未捕获的类型错误:未定义不是函数。哪里出错了?

这是减法的一个小技巧:http://jsfiddle.net/c8q7p6ac/ 这是一个用加法代替减号的小提琴:http://jsfiddle.net/c8q7p6ac/1/

减号和加号在变量updatedNumber中

html

<div class="amount">$1000.00</div>

<input class="new-number" type="text">
<div class="button">Click</div>

jQuery:

$('.button').on('click', function()
        //get value of input
        var newNumber = $('.new-number').val();

        //get total number value
        var totalNumber = $('.amount').text();

        var getNumberOnly = totalNumber.indexOf('$') + 1;

        var newTotalNumb = totalNumber.substr(getNumberOnly,    totalNumber.length);

        //add new number to total number
        var updatedNumber = (newTotalNumb + newNumber).toFixed(2);


        //and update total
        $('.amount').html('$'+updatedNumber);
); 

【问题讨论】:

您必须将数字从字符串转换为整数才能添加。 确实有道理,但为什么不用将数字从字符串转换为整数就减去呢? 这与 javascript 在混合类型上使用 -+ 的方式有关。 @Mrchief 解释得更深入。 调试这类事情的一个好方法就是 Try It And See™。使用console.log(someVar) 查看输出,找出其中一个变量与预期结果不匹配的位置。 【参考方案1】:

减法有效,因为 JavaScript 将它们转换为数字。但是,在加法的情况下,只要其中一个操作数是字符串,它就会将它们转换为字符串。

需要将字符串转换为数字:

var updatedNumber = (parseInt(newTotalNumb) + parseInt(newNumber)).toFixed(2);

在处理小数点时,您还可以使用parseFloat,它将保留小数点。

这是更新后的fiddle。

【讨论】:

感谢您的解释! 如果我需要使用小数怎么办。它似乎没有添加那些。它四舍五入到 xx.00 在这种情况下使用parseFloat 而不是parseInt 太棒了!感谢您的帮助

以上是关于减法在 JS 中工作,但加法在 JS 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

js 中 onkeyup 不起作用

为啥 Thymeleaf 代码在 HTML 的 head 部分不起作用但在 body 中工作正常

SAP HANA DB 连接在控制台应用程序中工作正常,但同样的事情在服务中不起作用

ALTER SESSION SET nls_date_format 在 APEX 中不起作用。但是在 SQL Developer 中工作

Discord.js 空值检查在 TypeScript 中不起作用

在 WAMP 中工作正常,但在 XAMPP 中不起作用