我无法从prompt
函数中获取值
如果用户输入等于6个变量之一,则该功能必须正常工作;如果输入不匹配,则在“如果”条件下停止该功能。我用&&, || !, ==, ===
进行了很多操作,没有任何效果,console.log给我的结果与我键入的结果相同(但大写的首字母大声笑)
//variables
let r = "Rock";
let p = "Paper";
let s = "Scissor";
let rl = "rock";
let pl = "paper";
let sl = "scissor";
const weapon = [r, p, s];
let playerChoiceUnchecked = prompt("Rock, Paper, or Scissor?");
//functions
function playerChoice(checkPlayer) {
if (playerChoiceUnchecked == ((!r && !rl) && (!p && !pl) && (!s && !sl))) {
alert("There's no such weapon");
return false;
} else {
let checkPlayer = playerChoiceUnchecked.charAt(0).toUpperCase() + playerChoiceUnchecked.slice(1);
//return checkPlayer;
console.log(checkPlayer); //debug for playerChoice, second part DONE
}
}
您的代码可以简化:
const weapons = ["rock", "paper", "scissor"]
function playerChoice() {
let playerChoiceUnchecked = prompt("Rock, Paper, or Scissor?");
if ( !weapons.includes( playerChoiceUnchecked.toLowerCase() ) ) {
alert("There's no such weapon");
} else {
let checkPlayer = playerChoiceUnchecked.charAt(0).toUpperCase() + playerChoiceUnchecked.slice(1);
console.log(checkPlayer);
}
}
playerChoice()
如果我理解您的问题,则您需要一个函数来验证该选项是否有效。如果是这种情况,您可以采用多种方式进行操作。这是两种更简单的方法:
第一个:(调用此函数,看看该选项是否有效。该函数将返回true = valid / false = invalid)
function verifyOptionSelected(option){
var isValid = false;
if (option != null){
switch(option.toLowerCase()){
case "rock":
case "paper":
case "scissor":
isValid = true;
break;
default:
isValid = false;
}
}
return isValid;
}
第二:(我认为方法相同,但是更好的编码方法)
function verifyOptionSelected(option){
var validOptions = ["rock", "paper", "scissor"];
return option != null && validOptions.indexOf(option.toLowerCase()) >= 0;
}