为什么javascript将typeof显示为" string"什么时候?

时间:2015-11-06 20:03:22

标签: javascript jquery

我正在尝试执行某些表单验证,出于某种原因,当我在输入字段中输入数字时,它会将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>

6 个答案:

答案 0 :(得分:4)

这是因为输入的值总是一个字符串。例如,当我输入3时,实际值不是数字3,而是字符串"3"。要检查它是否不是数字,请使用isNaN(),一个Javascript本机函数来检查某些内容是否不是数字。例如,当您运行isNaN("3")时,它将返回false,因为3是一个数字。

答案 1 :(得分:2)

输入元素的value属性始终存储为字符串,因此typeof始终返回“string”。

https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement

您需要编写自己的自定义函数来确定输入的类型。

答案 2 :(得分:1)

具有type属性值为“number”的input元素表示将元素值设置为表示数字的字符串的精确控件。

http://www.w3.org/TR/html-markup/input.number.html

所以无论如何,输入都包含一个字符串。

答案 3 :(得分:0)

此处w3.org。它提供: -

  

=浮点数#

     

表示数字的字符串。

答案 4 :(得分:0)

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(),它总是一个字符串。

答案 5 :(得分:0)

正如其他人所说,HTML输入元素总是将它们的值存储为字符串,即使这些值是“数字字符串”。以下是验证工作的一种方法:

$("button").click(function () {

    var number = $("#number").val();

    alert(Number(number));

    if(isNaN(Number(number))){
        alert("not a number");
    }

});