提问人:Musab Abdul Hameed Shah 提问时间:4/7/2023 更新时间:4/7/2023 访问量:42
有没有办法检查按键输入是否按指定顺序按下?
Is There a way to check if keydown inputs are pressed in a specified sequence?
问:
我正在尝试在我的网站中实现一个类似作弊代码的功能,如果一个人输入一个序列(如右上左下(使用箭头键)),网站的一个元素就会发生变化。
目前,我已经做了一些简单的事情,通过使用事件侦听器,我检查了 ArrowLeft、ArrowRight 等事件键,并分别添加了计数器。这里唯一的问题是它没有检查输入的顺序,所以如果按任何顺序按下键,元素就会改变。 我目前的代码是:
var i = document.getElementById("ind");
var Ltrigger = 0, Rtrigger = 0, Utrigger = 0, Dtrigger = 0;
document.addEventListener('keydown', function (event) {
switch (event.key) {
case "ArrowLeft":
Ltrigger++;
break;
case "ArrowRight":
Rtrigger++;
break;
case "ArrowUp":
Utrigger++;
break;
case "ArrowDown":
Dtrigger++;
break;
}
if (Ltrigger == 1 && Rtrigger == 1 && Utrigger == 1 && Dtrigger == 1) {
i.style.backgroundColor = 'aqua'
i.innerHTML = "<h3>SUCCESS</h3>"
}
})
答:
0赞
ProfDFrancis
4/7/2023
#1
到目前为止,按顺序保留键的累积数组或字符串
const i = document.getElementById("ind");
const sequenceElement = document.getElementById("sequence");
var keys = "";
document.addEventListener('keydown', event => {
keys += " " + event.key
sequenceElement.innerHTML="You have pressed:\n"+keys;
if (keys.endsWith(" ArrowUp ArrowDown ArrowLeft ArrowRight")) {
i.style.backgroundColor = 'aqua'
i.innerHTML = "<h3>SUCCESS</h3>"
}
})
<div id="ind">
Press arrows in this sequence: up, down, left, right.
</div>
<br>
<div id="sequence">
Sequence of keypresses will appear here. This is just for your understanding - remove it in your final program.
</div>
评论
1赞
Musab Abdul Hameed Shah
4/9/2023
正是我想要的。谢谢!
评论