将+1添加到只读文本输入字段的jQuery值
我正在使用一个函数,我有一个readonly
文本input
,当我执行函数时我想要数字值+ 1.所以假设我有60,当我执行函数时,返回的数字应该是61。
但它反而出现了601,这只是将数字1添加到字符串中。 关于发生了什么的任何线索? 减法,乘法和除法都可以正常工作。 这是一个片段
var num= $("#originalnum").val() + 1; $("#originalnum").val(num);
是的,我尝试了一些不同的变化,我错过了什么?
在这种情况下,简单的一元+
就足以将字符串转换为数字:
var num = +$("#originalnum").val() + 1; $("#originalnum").val(num);
问题是.val()
以字符串forms返回元素的值,当在字符串上使用+
运算符时,它会进行字符串连接。 您需要先将值转换为数字:
var num = +$("#originalnum").val() + 1; // unary plus operator // OR var num = Number($("#originalnum").val()) + 1; // Number() // OR var num= parseFloat($("#originalnum").val()) + 1; // parseFloat() // OR var num= parseInt($("#originalnum").val(),10) + 1; // parseInt()
请注意,如果使用parseInt()
,则必须包含radix(10)作为第二个参数,否则它将(取决于浏览器)将前导零作为八进制的字符串和前导"0x"
作为hex的字符串处理。 另请注意, parseInt()
忽略字符串末尾的任何非数字字符,包括用户可能想要作为小数点的句点,因此parseInt("123.45aasdf",10)
返回123
。 类似地, parseFloat()
忽略字符串末尾的非数字字符。
此外,如果它是用户输入的值,您应该仔细检查它实际上是一个数字,如果不是,可能会提供错误消息。
当你使用*
, /
或-
运算符时,JS会尝试自动将字符串转换为数字,这就是这些运算符“工作”的原因(假设字符串可以转换)。
你应该使用parseInt
函数并确保值是数字(使用isNaN函数):
var val = $("#originalnum").val(); var num = 0; if ( !isNaN(val) ) num= parseInt(val) + 1;
使用parseInt()
:
var num= parseInt($("#originalnum").val(),10) + 1;
因此,您的数字被视为整数而不是字符串(因为.val()
默认情况下将结果视为字符串)