isNaN应该是依据Number来判断的。isNaN('1')应该是false. 为什么输入'1' 弹出的答案是 "输入的不是数字"

<script>window.onload=function(){varaBtn=document.getElementsByTagName('input');varst... <script>
window.onload=function(){
var aBtn=document.getElementsByTagName('input');
var str='';

aBtn[1].onclick=function(){
str=aBtn[0].value;

if (isNaN(str)){alert('输入的不是数字')} else{alert('输入的是数字')}
};
};
</script>
</head>
<body>
<input type="text" />
<input type="button" value="判断输入的是不是数字" />
</body>
展开
 我来答
匿名用户
2016-10-09
展开全部
你的代码运行后,输入1,弹出的是“你输入的是数字”,但是isNaN(str)的返回值是false才对;因为:
if(true){
//执行的是返回值true的代码

}else{
//执行的是返回值false的代码

}
而你获取到的str其实是字符来的,需要用parseFloat() 和 parseInt() 来转换成数字格式才对。
PS:isNaN() 函数通常用于检测 parseFloat() 和 parseInt() 的结果,以判断它们表示的是否是合法的数字。
更多追问追答
追问
没明白。。 我现在做出了的结果已经是想要的了,但是我不明白为什么我输入像‘2’这样的字符串 经过isNaN('2')之后 返回应该是false。 应该走else后的输入的是数字呀,为什么会走true里的  输入的不是数字呢?
追答

不会啊,我复制了你那段代码去运行,然后输入2,弹出的结果是“你输入的是数字”啊。

jonahjeff
2016-10-09 · TA获得超过3380个赞
知道大有可为答主
回答量:3218
采纳率:38%
帮助的人:1043万
展开全部
或者你应该parseInt(str)一下,又或者你应该写isNaN(1)而不是isNaN('1')
追问
没明白。。 我现在做出了的结果已经是想要的了,但是我不明白为什么我输入像‘2’这样的字符串 经过isNaN('2')之后 返回应该是false。 应该走else后的输入的是数字呀,为什么会走true里的  输入的不是数字呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式