打印到控制台时为NaN,但typeof为数字jquery
NaN when printing to console but typeof is number jquery
我正在实现一个计时器,并试图找出为什么当在输入"秒"框中输入大于60的数字时,我不能更改"min"输入框的内容。当我打印"mins"的值时,我会得到NaN,但当我打印它的类型时,我得到的是一个数字。我刚开始学习JavaScript,如果有任何帮助,我将不胜感激。谢谢:)
jQuery:
$(function(){
$("#sec").change(function(){
if($("#sec").val() >= 60){
secs = parseInt( $("#sec").val() );
console.log("secs is " + secs );
if(secs < 0){
alert("Please enter a valid time interval");
$("#sec").val("");
return;
}
mins = parseInt( $("#min").val() );
console.log("mins is " + mins );
console.log(typeof mins);
hours = parseInt( $("#hour").val() );
days = parseInt( $("#day").val() );
secs = secs % 60;
mins = mins + Math.floor(secs/60);//can be > 60
console.log("mins is " + mins );
console.log(typeof mins);
hours += mins/60;
days += hours/24;
$("#min").val(mins);
$("#hour").val(hours + mins/60);
$("#day").val(days + hours/24);
}
});
});
html:
div class="left"></div>
<div class="center">
<h3> Please enter a time: </h3>
<form class="form-inline">
<div class="form-group col-xs-2">
<input id="day" class="form-control input-sm input" type="number" value="" name="Days" placeholder="Days">
</div>
<div class="form-group col-xs-2">
<input id="hour" class="form-control input-sm input" type="number" value="" name="Days" placeholder="Hours">
</div>
<div class="form-group col-xs-2">
<input id="min" class="form-control input-sm input" type="number" value="" name="Days" placeholder="Minutes">
</div>
<div class="form-group col-xs-2">
<input id="sec" class="form-control input-sm input" type="number" value="" name="Days" placeholder="Seconds">
</div>
尽管名称"不是数字",但typeof NaN
就是"number"
。是的,真的。:-)NaN
和Infinity
一样,属于数字类型。它是为IEEE-754中的数字定义的(JavaScript和许多其他编程语言使用的浮点数格式;特别是,JavaScript使用现在所称的"二进制64子格式",也就是"双精度")。
如果您对无法解析的内容调用parseInt
,它将返回NaN
。例如:
var n = parseInt("");
console.log(typeof n); // "number"
console.log(n); // "NaN"
如果你想在mins
(等)为空时使用0
,你可以使用JavaScript功能强大得出奇的||
操作符:
mins = parseInt( $("#min").val() ) || 0;
这将为您提供返回的编号parseInt
,如果parseInt
返回0
或NaN
,则为0
。
旁注:
如果要使用
parseInt
进行用户生成的输入解析,您可能需要使用它的第二个参数,该参数告诉它要使用的基数(10,表示十进制)。例如,n = parseInt(str, 10)
。否则,它会尝试根据输入进行猜测(大多数情况下,它将以0x
开头的字符串视为十六进制)。parseInt
很乐意忽略数字后面的额外字符。例如CCD_ 19给了我们CCD_ 20。如果您不想要这种行为,可以使用+
(n = +str;
)或Number
(n = Number(str)
),这两种方法都考虑整个字符串。但它们都接受0x
在开头表示十六进制,并且不支持使用基数。
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 测试索引值是否等于某个数字的倍数
- 将数字转换为一定数量的硬币
- 键入最后一位数字后自动提交
- 如何在javascript中迭代数字列表
- Javascript逻辑运算符和字符串/数字
- 如何在javascript中获得与特定数字相等的随机数
- 如果元素's的ID以数字开头
- 递增一个数字而不去掉前导零
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 如何在这里将两个值最低的数字相加
- 如何删除除冒号、数字和'上午'或者'下午'
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- Javascript排序字符串或数字
- 打印到控制台时为NaN,但typeof为数字jquery
- typeof(“2px”-1)返回数字;2px〃-1返回NaN.为什么?
- 为什么javascript将typeof显示为"字符串“;当它是一个数字时
- 编辑:为什么typeof(0)返回布尔值而不是数字?
- 为什么"typeof+''"返回'数字'
- Javascript数字连接而不是添加,但typeof是数字而不是字符串