gpt4 book ai didi

javascript - 打印到控制台时为 NaN 但 typeof 为数字 jquery

转载 作者:行者123 更新时间:2023-11-30 07:14:46 24 4
gpt4 key购买 nike

我正在实现一个计时器,并试图找出当在输入“sec”框中输入大于 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 和许多其他编程语言使用的 float 格式;具体来说,JavaScript 使用现在所谓的“binary64 子格式”,也称为“ double ”)。

如果您对它无法解析的内容调用 parseInt,它将返回 NaN。例如:

var n = parseInt("");
console.log(typeof n); // "number"
console.log(n); // "NaN"

如果你想在 0 为空白时使用 mins(等),你可以使用 JavaScript's curiously-powerful || operator 来实现。 :

mins = parseInt( $("#min").val() ) || 0;

这会给你返回的数字 parseInt,如果 parseInt 返回 0,则为 0 NaN.


旁注:

  1. 如果您要使用 parseInt 进行用户生成的输入解析,您可能想使用它的第二个参数,它告诉它使用什么基数(10,十进制).例如,n = parseInt(str, 10)。否则,它会尝试根据输入进行猜测(大多数情况下,它将以 0x 开头的字符串视为十六进制)。

  2. parseInt 会愉快地忽略数字后的额外字符。例如 str = "4 apples"; n = parseInt(str) 给我们 n = 4。如果您不想要这种行为,您可以使用 + (n = +str;) 或 Number (n = Number (str)),两者都考虑整个字符串。但它们都接受开头的0x表示十六进制,并且不支持使用基数(数字基数)。

关于javascript - 打印到控制台时为 NaN 但 typeof 为数字 jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29306151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com