我刚刚在parseInt上遇到1个问题 我将这个parseInt应用于我的所有项目,但今天我只是遇到了这个
我有正常的文字输入<input type='text' name='KG'>
我使用jquery来检索输入值,然后写入另一个输入
<input type='text' name='KG2'>
是我的jquery代码
$(":input[name='KG']").keyup(calc);
function calc(){
var kg = $(":input[name='KG']").val();
kg=parseInt(kg);
$(":input[name='KG2']").val(kg);
}
猜猜是什么,这是我得到的结果
输入@ KG&gt;显示@ KG2 答案 0 :(得分:5)
028
,034
和09
被视为八进制数,因为它们以0
开头而您没有指定基数。 8
和9
是无效数字,因此第一个和最后一个获得2
和0
,第二个被转换为十进制3*8 + 4 = 28
。< / p>
使用parseInt(kg,10);
答案 1 :(得分:2)
你忘了第二个参数,它指定了解释int的基数。要修复你的例子,试试这个:
$(":input[name='KG']").keyup(calc);
function calc(){
var kg = $(":input[name='KG']").val();
kg=parseInt(kg, 10);
$(":input[name='KG2']").val(kg);
}
答案 2 :(得分:2)
将您的代码更改为;
kg=parseInt(kg, 10);
您必须将基数(第二个参数)传递给parseInt()
,否则它将根据内容进行猜测。 “猜测”逻辑全部描述为here on MDN。
在您的情况下,如果字符串以0
而不是0x
开头,则假定字符串为八进制,仅将0-8视为合法字符,并在基数8中转换。 / p>
故事的道德 - 总是将基数值传递给parseInt()
。