我有一些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。有什么想法如何在我的测试变量中将输入的更新值输出为数字?
答案 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时,我将其尝试到浏览器的开发人员工具控制台中。 逐步进行操作可以避免错误