答案 0 :(得分:3)
如果用户输入响应(即使它是空白的,或看起来像数字),prompt()
的返回值的类型将始终为String,如果用户取消,则为null
对话框。它永远不是一个数字。
如果您想知道用户是否输入了一个可以解释的字符串作为数字,那完全是另一回事。考虑:
if (!isNaN(parseFloat(text))) {
alert("it's a number");
}
(但请注意,有一些警告与parseFloat()
相关联;特别是,它会忽略尾随垃圾。123.45xyz
会被解析为123.45
。)
答案 1 :(得分:2)
使用双等号而不是三等号,并在检查typeof时,使用您正在检查的对象周围的括号。另外,如果你处于第二种情况,最好使用else。
答案 2 :(得分:2)
你的第一个陈述应该是“这是一个数字”。 Prompt()将返回值作为字符串,因此第一个条件将始终为false。您可以更改条件以使用isNan(文本)。你第一个条件与其余的代码看起来像这样,应该工作。你可能永远不会遇到最后一个条件。
var text = prompt("enter your name");
if (!isNaN(text)) {
alert("this is a number");
} else if (typeof text === "string") {
alert("this is a string");
} else {
alert("anyway.. thanks to try");
}