javascript - JS中没有返回值
问题描述
我有一个用逗号分隔的值。代码如下:
function addComma(values) {
const v = values.value && new Number(values.value.replace(/,/g, ''));
values.value = v.toLocaleString();
}
if (document.getElementById("values"))
var pay = document.getElementById("values").value;
payment = pay.replace(/\,/g, '');
<label>Rent</label> <input style="font-size:10px;width:80px;text-align:right" id="values" type="text" onkeyup="addComma(this);">
问题:
if (selectedPayType === "A") {
PV = getNPV(rate, array, payment) + payment;
console.log("PV);
}
出于某种原因,PV
返回值但不添加+payment
. 但是,+payment
如果我使用数值本身 ex:而不是10000
,那么它会将值相加。
我尝试调试,但它在里面取了付款值getNPV
,而不是把它加起来,这真的很奇怪。不知道我在这里做错了什么。任何帮助表示赞赏。谢谢你。
解决方案
主要问题是您正在向数字添加字符串。例如:1 + '2' = '12'
. 因此,您需要将您payment
的字符串转换为数字。
不要使用Number
构造函数,因为它可能会导致不需要的结果,而是使用parseFloat
orparseInt
将数字字符串转换为数字。
psparseInt
你应该/需要指定一个radix
.
有用的链接
稍微改变了结构(在 addComma
被调用的函数中添加了 if onkeyup
)
见下文
function addComma(values) {
const v = values.value && parseFloat(values.value.replace(/,/g, ''));
values.value = v.toLocaleString();
if (document.getElementById("values")) {
var pay = document.getElementById("values").value;
payment = pay.replace(/\,/g, '');
PV = 10 + parseFloat(payment);
console.log(PV);
}
}
<label>Rent</label> <input style="font-size:10px;width:80px;text-align:right" id="values" type="text" onkeyup="addComma(this);">
推荐阅读
- winforms - Windows 7 视觉样式可以在 Windows 10 中使用吗?
- c# - 带有 NetTopologySuite.Geometries.Point 的 Entity Framework Core 3.1:SqlException:提供的值不是数据类型地理的有效实例
- mongodb - Mongoose:依赖于其他虚拟属性的虚拟属性
- ios - 使对象/图像在 Xcode 中随机出现和消失
- .net - 如何在 LiteDb 中设置自定义类型?
- c# - ABP 无法创建组件,因为它需要满足依赖关系
- for-loop - 分配给宏按钮时,for循环无法正常工作?
- php - 如何在 AWS Cloudfront 中组合流名称?
- mysql - 根据多个订单条件为每个组选择第一行
- codenameone - 代号 纵向锁定应用程序中的一个横向表单