javascript - 只要按下特定键就循环运行函数

标签 javascript keydown keyboard-input

我想只要按下箭头键就重复运行特定的代码段。我尝试在一周内尽可能多地学习有关 JavaScript 的知识,并编写了这段代码(见下文),但它不起作用。现在我正在尝试在页面上打印一些内容,但在最终实现中我需要重复运行一个文件。另外我想知道一种方法来打印新执行的函数的结果而不删除屏幕上已有的任何内容。

<html>

<head>
<title>

</title>
</head>

<body>

<script>

document.write("Script loaded <br/>");

document.onkeydown=initiate;

function initiate{
$(document).keydown(function(event) {
keyCode=event.keyCode;
event.preventDefault();
});
}

if(keyCode==38){
window.setInterval({a()},100);
function a(){
document.write("Up key</br>");
}

else if(keyCode==39){
window.setInterval({b()},100);
function b(){
document.write("Right key</br>");
}

else if(keyCode==40){
window.setInterval({c()},100);
function c(){
document.write("Down key</br>");
}

else if(keyCode==41){
window.setInterval({d()},100);
function d(){
document.write("Left key</br>");
}

</script>

</body>

</html>

PS:请原谅我糟糕的脚本技巧。我试图快速掌握所有内容,以便将其整合到我正在从事的项目中。

最佳答案

请稍微清理一下你的代码。你让事情变得不必要的复杂

定义所有函数 a、b、c、d,然后使用以下代码。如果您使用 jquery,请使用适当的处理程序。

document.onkeydown = function() {
    switch (window.event.keyCode) {
        case 37:
            window.setInterval(a,100);
            document.write("left key</br>");
            break;
        case 38:
            window.setInterval(a,100);
            document.write("up key</br>");
            break;
        case 39:
            window.setInterval(c,100);
            document.write("right key</br>");
            break;
        case 40:
            window.setInterval(d,100);
            document.write("down key</br>");
            break;
    }
};

注意:

1.It is a better practice to use innerHTML instead of document.write.

2.Use keydown, not keypress for non-printable keys such as arrow keys

关于javascript - 只要按下特定键就循环运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20769732/

相关文章:

javascript - 这些javascript对象有什么区别,如何循环

javascript - 点击第n个元素后,如何操作另一个第n个元素?

javascript - 使用 jquery 检测 Three.js 场景内的按键

c++ - 使用 WINAPI ReadConsole

javascript/jQuery 在方法中传递参数

javascript - 如何使用 Angular Material 的 $mddialog 服务中的 typescript 在 IDialogOptions 中设置解析签名

javascript - 比较 jQuery 中的按键和字符的简单方法?

javascript - 当用户在文本区域中输入特定键时防止默认

javascript - 在contenteditable中插入一个span,然后用户无法在刚刚插入的span之后和之后继续输入

wpf - 将输入解释为选项卡 WPF