【发布时间】:2019-01-08 10:44:18
【问题描述】:
我正在用 JavaScript 制作一个简单的刽子手游戏。我正在尝试添加新功能,我想添加的功能之一是检查用户提供的输入(当他们猜测未知单词的字母时)以确保它实际上是字母数字输入(或者我的目的是检查输入不是像“!”这样的符号或像“5”这样的数字)。
我知道我可能会使用一个包含所有有效字符的全局变量并根据这些字符检查输入,但我想知道是否有内置方法。我找到了 typeof 运算符,但似乎我正在检查的字符类型被 JavaScript 转换为字符串。
我试图在其中实现的循环:
while (remainingLetters > 0 && numberOfGuesses > 0) {
alert(answerArray.join(" "));
alert("You have " + numberOfGuesses + " guesses remaining.");
var guess = prompt("Guess a letter, or click \
'Cancel' to stop playing.").toLowerCase();
if (guess === null) {
break;
} else if (typeof guess === "number") {
alert("Please enter a single LETTER.");
} else if (guess.length !== 1) {
alert("Please enter a single letter.");
} else {
for (var j = 0; j < word.length; j++) {
if (word[j] === guess) {
answerArray[j] = guess;
remainingLetters--;
// there is some code missing here that I'm pretty sure is not essential
// to my question!
当我在 Chrome 的开发工具中运行它时,我可以输入“2”并且它永远不会给我我正在寻找的警报 - 它不会崩溃或任何它只是重新启动循环(这是状态在我尝试实现这个“功能”之前的现状)。
提前致谢!
【问题讨论】:
-
prompt()函数总是返回一个字符串。 -
你最好使用一个简单的正则表达式。见:stackoverflow.com/questions/9862761/…
标签: javascript validation ecmascript-6