【问题标题】:Values not being returned in JSJS中没有返回值
【发布时间】:2018-12-03 15:15:12
【问题描述】:

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

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 中获取付款值,但没有将其相加,这真的很奇怪。不知道我在这里做错了什么。任何帮助表示赞赏。谢谢。

【问题讨论】:

  • 您的 if 语句块完全缺少大括号。 payment 应该是什么?
  • 将付款转换为 int/float(parseInt()/parseFloat()) 然后添加。
  • @Sanjay 它不起作用。它对第一个功能采用相同的付款价值,但根本没有添加它。

标签: javascript


【解决方案1】:

主要问题是您将字符串添加到数字中。例如:1 + '2' = '12'。所以你需要将你的payment 字符串转换成数字。

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

附言对于parseInt,您应该/需要指定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);">

【讨论】:

  • 很高兴我能帮上忙。我还为您分享了一些有用的链接。我建议你阅读它们。感谢您的支持。干杯! :D
猜你喜欢
  • 2021-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
  • 2016-12-12
  • 2017-02-28
  • 2013-03-21
相关资源
最近更新 更多