javascript - js用isNAN判断数字为什么输入“数字+英文点号”也通过?
怪我咯
怪我咯 2017-04-10 14:25:53
[JavaScript讨论组]

在w3c上做一个例子的时发现的【w3c直通车】
发现如果输入数字加一个英文点号居然也是可以通过的例如“10.”,不解,求大神介绍。。

附上代码:



<p>Please input a number:</p> <input id="numb" type="text"> <button type="button" onclick="myFunction()">Click Me!</button> <p id="demo"></p> <script> function myFunction() { //Get the value of input field with id="numb" var val = document.getElementById("numb").value; //Get the element with id="demo" var elem = document.getElementById("demo"); //If value is space or not a number if (val == "" || isNaN(val)) { elem.innerHTML = "Not a Number"; } else { elem.innerHTML = "Input OK"; } } </script>
怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(3)
ringa_lee
  • isNaN这个函数只会对NaN这一个值返回true,其他一律是false
  • 在Javascript世界,==是不该出现的特异点,黑洞,撒旦之子
  • 在DOM世界,onclick也是不该出现的
  • 如果你只是希望得到一个合法的小数,parseFloatisNaN组合就可以了
  • 如果你还希望用户用比较正常的格式输入,不允许诸如10. +3 123e-2 0755 0xabc之类的东西,那么应该用正则来做这个检测比较靠谱
高洛峰

Javascript 会把这个情况当做浮点数处理。

记住这个例子,以后就明白了。这也是 Javascript 解析器解析点操作符的一个“癖好”:

var a =[1].toString();//String
var b = 1.toString();//SyntaxError

当点操作符前为数字常量时会被解析为浮点数特征。

如果希望解析器不将其读作浮点数特征,题主这样写:

1..toString();
1 .toString();
(1).toString(); 

上面三个例子全部返回字符串变量,也就是说点操作符恢复正常。

PHP中文网
10. 不就是 10.0 吗?
就好比 .1 就是 0.1 哎。。
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号