如何解决JavaScript Konami 代码问题包含代码
我对 JavaScript 完全陌生,所以请原谅我缺乏知识。如果有人能告诉我我做错了什么(未触发警报“万岁”),我将不胜感激。代码如下:
const codes = [
"ArrowUp","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","b","a"
];
let index = 0;
function init() {
document.body.addEventListener("keydown",(event) => {
function onKeyDownHandler(e) {
const key = e.key;
if (key === codes[index]) {
index++;
if (index === codes.length) {
alert("Hurray");
index = 0;
}
} else {
index = 0;
}
}
});
}
解决方法
函数 init()
永远不会被调用,函数 onKeyDownHandler()
也不会被调用。一种方法是简单地删除此内部函数,确保您的 event
(e
) 与您传递给 addEventListener()
的名称相同。
以下显示了一个工作示例:
const codes = [
"ArrowUp","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","b","a"
];
let index = 0;
document.addEventListener("keydown",(e) => {
const key = e.key;
if (key === codes[index]) {
index++;
if (index === codes.length) {
alert("Hurray");
index = 0;
}
} else {
index = 0;
}
});
您的 init()
可能没有被调用。
这是一个工作演示:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>hello</title>
<script>
const codes = [
"ArrowUp","a"
];
let index = 0;
window.onkeydown = function (e) {
const key = e.key;
if (key === codes[index]) {
index++;
if (index === codes.length) {
alert("Hurray");
index = 0;
}
} else {
index = 0;
}
}
</script>
</head>
<body>
hello
</body>
</html>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。