JS中未返回值

时间:2018-12-03 15:15:12

标签: javascript

我的值用逗号分隔。代码如下:

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内部,但没有将其相加,这确实很奇怪。不知道我在这里做错了什么。任何帮助表示赞赏。谢谢。

1 个答案:

答案 0 :(得分:2)

主要问题是要在数字中添加字符串。例如:1 + '2' = '12'。因此,您需要将payment(一个字符串)转换为数字。

请勿使用Number构造函数,因为它可能会导致不必要的结果,但请使用parseFloatparseInt将数字字符串转换为数字。

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);
   }
}