我有一个由 Python 生成的网页,需要启用 Javascript 事件处理程序。下面的代码返回错误:节点未定义。
以下问题的答案看起来很有希望,但我缺少“节点”变量赋值。我想添加评论,但系统不允许我这样做。它说我需要 50 的声誉才能添加评论。
Detecting arrow key presses in JavaScript
<BODY>
<script type="text/javascript">
node.addEventListener("keydown", function(event) {
const key = event.key; // "ArrowRight", "ArrowLeft", "ArrowUp", or "ArrowDown"
});
switch (event.key) {
case "ArrowLeft":
// Left pressed
alert( "Left Arrow" );
break;
case "ArrowRight":
// Right pressed
alert( "Right Arrow" );
break;
case "ArrowUp":
// Up pressed
alert( "Up Arrow" );
break;
case "ArrowDown":
// Down pressed
alert( "Down Arrow" );
break;
}
</script>
最佳答案
假设您想在整个页面上监听按键事件,您可以将 node
替换为已在 JS 中定义的 document
。您还需要将 switch 语句移动到事件监听器的回调函数中,如下所示:
document.addEventListener("keydown", function(event) {
event.preventDefault(); // prevent page from scrolling
const key = event.key; // "ArrowRight", "ArrowLeft", "ArrowUp", or "ArrowDown"
switch (key) { // change to event.key to key to use the above variable
case "ArrowLeft":
// Left pressed
alert("Left Arrow");
break;
case "ArrowRight":
// Right pressed
alert("Right Arrow");
break;
case "ArrowUp":
// Up pressed
alert("Up Arrow");
break;
case "ArrowDown":
// Down pressed
alert("Down Arrow");
break;
}
});
body {
height: 200vh;
}
<p>Some text</p>
解释:
本质上 document
代表您的整个页面。您可以向您的文档(即页面)添加一个事件监听器,以便在发生某些事情时执行一个函数。在我们的代码中,我们添加了一个 keydown
事件监听器,这意味着我们希望在按下某个键时执行一些代码。将运行的代码是 function(event) {...}
中的代码。当事件发生时,我们可以从传递给触发函数的 event
参数中获取有关该事件的具体细节。我们可以从传递给函数的 event
对象中获取许多详细信息,其中之一就是按下的 key
。在我们的代码中,我们使用 evet.key
获取按下的键,然后将其存储在名为 key
的变量中。然后我们使用 switch
语句检查按下了哪个键,如果出现特定键则执行相关代码。
关于Python 网页中的 Javascript 事件处理程序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56723984/