javascript中的typeof()函数错误[重复]
Posted
技术标签:
【中文标题】javascript中的typeof()函数错误[重复]【英文标题】:typeof() function errors in javascript [duplicate] 【发布时间】:2012-08-02 04:09:37 【问题描述】:可能重复:Is there a (built-in) way in javascript to check if a string is a valid number?
我有一个 html 输入搜索栏
<form class="form-inline" action="javascript:displayResult()">
<input id="searchKey" >
<button onclick="result()" type="button" class="btn btn-warning btn ">
Go
</button>
</form>
这是Javascript函数
function result()
search($('#searchKey').val());
if(typeof(searchKey)=="number") // checking if this is a number
someFunction();
;
问题是,对于搜索栏中的每个条目,我都会将值作为字符串获取,即使搜索栏中的值是“hello”或 9789。我使用alert(typeof(searchKey));
进行验证,它总是将类型返回为字符串
我试图在搜索栏中区分数字和字符串,我确信有更好的方法可以做到这一点,但我不确定为什么这不起作用
我不能使用 parseInt() 因为我需要动态区分文本和数字
【问题讨论】:
return
语句之后的代码何时执行?
你在return man后调用它!
抱歉,我已经编辑了我的代码
searchKey
是全局变量吗?
尝试 parseInt(str, base) 如果失败,它应该只返回 0
【参考方案1】:
<input type="text">
的值始终是一个字符串。但是,您可以使用parseInt
将其解析为数字。如果不能从字符串中解析出数字,它将导致NaN
。不要忘记您必须为此使用 isNaN
,因为 myNumber === NaN
不是有效的操作。
更好的是,使用isNaN(+searchKey)
,因为一元操作数将调用ToNumber
。但是,这将忽略空格。
9.3.1 ToNumber 应用于字符串类型
应用于字符串的ToNumber 将以下语法应用于输入字符串。如果语法无法解释 String 作为 StringNumericLiteral 的扩展,则 ToNumber 的结果为 NaN。
[具体规则见http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf]
11.4.6 一元 + 运算符
一元 + 运算符将其操作数转换为数字类型。 产生式 UnaryExpression : + UnaryExpression 的评估如下:
设 expr 为计算 UnaryExpression 的结果。 返回到数字(GetValue(expr))。
【讨论】:
它有时无法工作。像“123dwabc”。 @blueiur:您可以使用parseInt(val).toString() == val
确保两个值相同,也可以使用regular expression。
我认为使用 parseFloat 而不是 parseInt :)【参考方案2】:
文本输入字段始终包含 string
值。尝试if (!isNaN(searchKey))
来测试数值。或者,您可以使用正则表达式:/^\d+$/.test(searchKey)
【讨论】:
【参考方案3】:使用
if(!isNaN(searchKey))
而不是
if(typeof(searchKey)=="number")
【讨论】:
以上是关于javascript中的typeof()函数错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章
判断JavaScript值的类型可以用typeof和instanceof