为什么javascript将typeof显示为"字符串“;当它是一个数字时
Why is javascript showing typeof as "string" when its a number?
我正在尝试预处理一些表单验证,由于某种原因,当我在输入字段上输入一个数字时,它会将typeof显示为字符串。
我真的无法理解这件事。我试过在网上搜索,但找不到答案。
如有任何帮助,我们将不胜感激。下面是我的代码jsfiddle示例的链接。
提前感谢
https://jsfiddle.net/eldan88/2xb47g78/
<button>Check if number</button>
<input id="number" type="number">
<script>
$("button").click(function () {
var number = $("#number").val();
alert(typeof (number));
if(typeof number !== "number"){
alert("not a number");
}
});
</script>
这是因为输入的值始终是字符串。例如,当我输入3
时,实际值不是数字3
,而是字符串"3"
。要检查它是否不是数字,请使用isNaN()
,一个Javascript本机函数来检查某个东西是否不是数字。例如,当您运行isNaN("3")
时,它将返回false
,因为3
是一个数字。
输入元素的value属性总是存储为字符串,因此typeof总是返回"string"。
https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement
您需要编写自己的自定义函数来确定输入的类型。
具有值为"number"的type属性的输入元素表示用于将元素值设置为表示数字的字符串的精确控件。
http://www.w3.org/TR/html-markup/input.number.html
所以不管怎样,输入都包含一个字符串。
w3.org上的此处。it adivses:-
值=浮点数#
表示数字的字符串。
正如其他人所说,HTML输入元素总是将其值存储为字符串,即使这些值是"数字字符串"
$("button").click(function () {
var number = $("#number").val();
alert(Number(number));
if(isNaN(Number(number))){
alert("not a number");
}
});
var myVar=5
alert(typeof myVar) //Number
var myVar = "5"
alert(typeof myVar) //String
var myVar = "5"
var vResult = parseInt(myVar);
alert(typeof vResult) //Number
在您的情况下,从文本框返回的是.val(),它始终是一个字符串。
相关文章:
- 递增一个数字而不去掉前导零
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 制作一个regex来验证只有一个数字的字符串
- 如何限制一个字段只接受4个数字字符作为输入,并获得'It’这是潜水警报
- 为什么这个正则表达式不't匹配最后一个字母数字字符
- 一个jquery验证器方法,它不接受纯数字或纯特殊字符,但接受上面是否有字母
- 如何拆分一个整数和产生的所有数字来创建一个新数字
- 如何使用至少一个数字、一个大写字母和6-20个字符验证密码
- 当与另一个实例进行比较时,我的类实例如何隐式返回数字
- 简单的Javascript方式,在输入字段的每5位数字后添加一个空格
- 有没有办法在里面看到一个数字'的64位浮点IEEE754表示
- PHP函数识别3个数字中最低的一个并更改其类
- 我如何解析二's是一个数字的补码字符串
- 为什么我需要在这里输入var,为什么它会给我一个数字作为答案?(Javascript)
- 在我的网站上创建一个在1-10之间不断变化的数字时遇到了问题.Javascript
- 如何获取一个以零开头的数字的位数
- 如何创建一个确定2个数字之间值的函数
- 当我添加一个新数字时,如何获得一些数字的即时平均值
- 为什么 JavaScript 如果一个数字有一个前导零,就将其视为八进制