我正在努力学习js。所以,对于学习我想写一个名为rock,papper,scissors的小游戏。 现在我想做一个提示符(),用户必须输入他想要选择的内容。但如果他没有写出3个可能的答案(摇滚,纸张,剪刀),他就必须再做一次。
到目前为止我的代码:
function validateUserChoice() {
var localUserChoi = prompt("Please choose rock, paper or scissors");
while (localUserChoi != "rock" || localUserChoi != "paper" || localUserChoi != "stone") {
alert("You have to type one of the words: rock, paper, scissors");
localUserChoi = prompt("Bitte geben Sie rock, paper oder scissors ein");
}
userChoice = localUserChoice;
}
我知道while循环的条件是错误的,但是我需要写什么呢?
欢呼声 塞巴斯蒂安
答案 0 :(得分:1)
这有效:
var answer = '';
var options = ['rock', 'paper', 'scissors'];
while (!~options.indexOf(answer)) {
answer = prompt('Please choose: "'+ options.join(', ') +'"');
};
<强>说明:强>
默认情况下,answer
与任何数组值都不匹配,因此prompt
在while循环中完成。在与数组索引(0,1或2)匹配后,索引将转换为:
〜=导致在索引中加1,然后否定[这使得0为-1,其评估为true
! =将其转换为相反的布尔值(其中true变为false以在循环时退出)。