我的值用逗号分隔。代码如下:
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
,例如:10000
,那么它将把该值相加。
我尝试调试,但是它把付款值放在getNPV
内部,但没有将其相加,这确实很奇怪。不知道我在这里做错了什么。任何帮助表示赞赏。谢谢。
答案 0 :(得分:2)
主要问题是要在数字中添加字符串。例如:1 + '2' = '12'
。因此,您需要将payment
(一个字符串)转换为数字。
请勿使用Number
构造函数,因为它可能会导致不必要的结果,但请使用parseFloat
或parseInt
将数字字符串转换为数字。
p.s。对于parseInt
,您应该/需要指定radix
。
有用的链接
更改了结构(在名为addComma
的{{1}}函数内部添加了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);
}
}