减法在 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 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Thymeleaf 代码在 HTML 的 head 部分不起作用但在 body 中工作正常
SAP HANA DB 连接在控制台应用程序中工作正常,但同样的事情在服务中不起作用
ALTER SESSION SET nls_date_format 在 APEX 中不起作用。但是在 SQL Developer 中工作