在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>
10. 不就是 10.0 吗?
就好比 .1 就是 0.1 哎。。
Javascript
会把这个情况当做浮点数处理。
记住这个例子,以后就明白了。这也是 Javascript
解析器解析点操作符的一个“癖好”:
var a =[1].toString();//String
var b = 1.toString();//SyntaxError
当点操作符前为数字常量时会被解析为浮点数特征。
如果希望解析器不将其读作浮点数特征,题主这样写:
1..toString();
1 .toString();
(1).toString();
上面三个例子全部返回字符串变量,也就是说点操作符恢复正常。
-
isNaN
这个函数只会对NaN
这一个值返回true,其他一律是false - 在Javascript世界,
==
是不该出现的特异点,黑洞,撒旦之子 - 在DOM世界,
onclick
也是不该出现的 - 如果你只是希望得到一个合法的小数,
parseFloat
和isNaN
组合就可以了 - 如果你还希望用户用比较正常的格式输入,不允许诸如
10.
+3
123e-2
0755
0xabc
之类的东西,那么应该用正则来做这个检测比较靠谱