Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将通过document.onkeyup捕获的变量与javascript中的数组索引进行匹配?_Javascript_Arrays_String_For Loop - Fatal编程技术网

如何将通过document.onkeyup捕获的变量与javascript中的数组索引进行匹配?

如何将通过document.onkeyup捕获的变量与javascript中的数组索引进行匹配?,javascript,arrays,string,for-loop,Javascript,Arrays,String,For Loop,我正在制作一个石头剪刀游戏。我试图通过document.onkeyup事件捕获用户输入,然后将其与有效选项数组进行比较。如果用户选择是Matache,则会显示一条警报,确认用户选择。如果不是,则应显示一条警报,请求输入有效条目 问题是,无论我做什么,JavaScript引擎似乎都无法捕获userChoice部分,除非它是一个特别定义的字符串,如:var userChoice=“r”。下面是代码 document.onkeyup = function (event) { var userCho

我正在制作一个石头剪刀游戏。我试图通过document.onkeyup事件捕获用户输入,然后将其与有效选项数组进行比较。如果用户选择是Matache,则会显示一条警报,确认用户选择。如果不是,则应显示一条警报,请求输入有效条目

问题是,无论我做什么,JavaScript引擎似乎都无法捕获userChoice部分,除非它是一个特别定义的字符串,如:var userChoice=“r”。下面是代码

document.onkeyup = function (event) {
  var userChoice = (event.key);
}

var validChoices = ["r" , "p" , "s"];

var choiceIsValid = false;

for (var i=0; i < validChoices.length; i++) {
    if(validChoices[i] === userChoice) {
    choiceIsValid = true;
  }
}

if(choiceIsValid) {
    alert("Your choice is " + userChoice);
} else {
  alert("Please make a valid choice");
}
document.onkeyup=函数(事件){
var userChoice=(event.key);
}
var validChoices=[“r”、“p”、“s”];
var choiceIsValid=false;
对于(变量i=0;i
当用户按下某个键时,您的代码会将其存储在
userChoice
变量中,但实际上不会对存储的值进行任何处理,因为这是keyup处理程序函数中包含的全部内容

要获得预期效果,必须将代码的输入处理部分移动到keyup函数中:

var validChoices=[“r”、“p”、“s”];
document.onkeyup=函数(事件){
var choiceIsValid=false;
var userChoice=(event.key);
对于(变量i=0;i}
您需要将所有代码放在
keyup
事件函数中。您的代码必须被告知运行,如果它在该函数之外,则永远不会被告知执行

您不需要迭代数组来发现数组中是否包含某些内容。您可以使用数组
包含
方法:

arr.includes(项目)

它将返回true或false。这也否定了您使用变量来存储选择是否有效

然后我们可以使用三元组,因为只有两种可能的结果,要么警告键入的键有效并包含在valid choices数组中,要么警告它无效

三元结构的示例:

(条件)?(真代码):(假代码)

document.onkeyup=函数(事件){
var userChoice=event.key,
有效选择=[“r”、“p”、“s”];
(有效选择。包括(用户选择))?
警报(“您的选择是”+用户选择):
警告(“请做出有效选择”);

}
将所有代码放入keyup函数中