首页 > 解决方案 > 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,而不是把它加起来,这真的很奇怪。不知道我在这里做错了什么。任何帮助表示赞赏。谢谢你。

标签: javascript

解决方案


主要问题是您正在向数字添加字符串。例如:1 + '2' = '12'. 因此,您需要将您payment的字符串转换为数字。

不要使用Number构造函数,因为它可能会导致不需要的结果,而是使用parseFloatorparseInt将数字字符串转换为数字。

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


推荐阅读