使用变量中的数学函数获取输入值

时间:2019-04-01 21:03:16

标签: javascript

我有一些JavaScript可以通过加/减按钮更改输入值。 现在,我需要将值递减后保存到变量中,然后将其输出为数字。

递减的javascript看起来像这样:

if (!isNaN(currentVal) && currentVal > 0) {
    // Decrement one
    $('input[id='+fieldName+']').val(currentVal - 1);
    var test = parseInt($('input[id='+fieldName+']').val(currentVal - 1).val());
    alert(test);
}

因此,正如您所看到的,我试图在名为“ test”的变量中获取输入的更新值,但我所得到的只是一个NaN。有什么想法如何在我的测试变量中将输入的更新值输出为数字?

3 个答案:

答案 0 :(得分:1)

正如 @trincot 所说,我们无法重现您的情况。但是,返回NaN的原因是因为。

parseInt返回从给定字符串中解析的整数。如果第一个字符不能转换为数字,则返回 NaN

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt

let a = '1'
let b = 'Two'

console.log(parseInt(a));
// 1
console.log(parseInt(b));
// NaN
console.log(parseInt(undefined))
// NaN

答案 1 :(得分:0)

您可以使用双Tilda运算符~~,其行为类似于Math.floor(),但如果值不是数字,则会返回0

我相信这是您正在寻找的解决方案:

let inputField = document.querySelector('input[name="fieldName"]');


increment = () => {
  let currentValue = ~~inputField.value;
  alert(currentValue);
  inputField.value = currentValue + 1;
};

decrement = () => {
  let currentValue = ~~inputField.value;
  alert(currentValue);
  if (currentValue > 0) {
    inputField.value = currentValue - 1;
  }
};
<input type="number" name="fieldName" value="0" />
<button onclick="increment()">+</button>
<button onclick="decrement()">-</button>

希望这会有所帮助

答案 2 :(得分:0)

有些事情出现在我身上。

您正在使用jquery(我认为这是$选择器的正确原因),并且您正在使用括号表示法获取ID。 为什么不使用

之类的东西

var选择器='#'+ fieldName;

然后

$(选择器)???

另一件事,通常是在尝试使用javascript时,我将其尝试到浏览器的开发人员工具控制台中。 逐步进行操作可以避免错误