新人求教,isNaN的判断问题

Aaron369 2018-05-04 04:56:43
猜数字小案例中,在网页文本框中输入带引号的数字,为什么isNaN的判断为true,比如手动输入"5.6"。如果将文本创获得的数据在控制台输出,也会是"5.6",但是判断会为true。
如果直接在浏览器控制台输出console.log(isNaN("5.6"))则为false
为什么判断结果会不同?

var s = parseInt(Math.random()*100);
function guess() {
var n = document.getElementById("input").value;
var span = document.getElementById("result");
console.log(n);
console.log("5.6");
if(isNaN(n)){
console.log("请输入数字!");
} else {
var num = parseInt(n);
if(num==s){
span.innerHTML="猜对了!";
} else if(num>s){
span.innerHTML="猜大了!";
} else {
span.innerHTML="猜小了!";
}
}
}
...全文
930 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
镰刀魔 2018-05-09
  • 打赏
  • 举报
回复
isNaN 在判断前会隐藏式的做一下Number()的数值转换工作。 Number('"123"') //NaN Number('123a') //NaN parseInt('"123"') //NaN parseInt('123a') //123 所以,正则判断用户输入情况是否更好一些,或者使用 <input type="number" />
CSY_Admin 2018-05-09
  • 打赏
  • 举报
回复
建议你查看下isNaN的定义, NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字. 你在文本框输入“5.6”.该文本框的value值为value=“"5.6"” isNaN判断"5.6"不是数值,所以返回true
lmx54821 2018-05-07
  • 打赏
  • 举报
回复
你用num 接收输入框的值的时候用了parseint
天际的海浪 2018-05-07
  • 打赏
  • 举报
回复
你在文本框输入的引号是做为字符串中一个字符内容。等同于 n='"5.6"' isNaN('"5.6"')当然是true
Aaron369 2018-05-04
  • 打赏
  • 举报
回复
后面再看的时候碰到类似的问题了,文本框接受的的数据类型为String。输入"5.6",应该相当于自己定义一个变量s=' " 5.6 " '

87,838

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧