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