只要按下特定键,就在循环中运行一个函数

时间:2013-12-25 06:27:08

标签: 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>

P.S。:请原谅我糟糕的脚本编写技巧。为了将它整合到我正在进行的项目中,我试图抓紧一切。

2 个答案:

答案 0 :(得分:2)

请稍微清理一下你的代码。你正在做一些不必要的复杂的事情

定义所有函数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.使用innerHTML代替document.write是一种更好的做法。

     

2.使用keydown,而不是按键,用于不可打印的键,如箭头键

答案 1 :(得分:0)

代码中的问题

  1. if-else阻止不正确。
  2. keydown事件处理程序中嵌入 if-block
  3. 单独定义功能
  4. $(document).keydown是jQuery,不是原生JavaScript,你不需要它。
  5. 代码:

    document.write("Script loaded <br/>");
    document.onkeydown = initiate;
    
    function initiate() {
        keyCode = window.event.keyCode;
        event.preventDefault();
        if (keyCode == 38) {
            window.setInterval({
                a()
            }, 100);
        } else if (keyCode == 39) {
            window.setInterval({
                b()
            }, 100);
        } else if (keyCode == 40) {
            window.setInterval({
                c()
            }, 100);
        } else if (keyCode == 41) {
            window.setInterval({
                d()
            }, 100);
        }
    }
    
    function a() {
        document.write("Up key</br>");
    }
    
    function b() {
        document.write("Right key</br>");
    }
    
    function c() {
        document.write("Down key</br>");
    }
    
    function d() {
        document.write("Left key</br>");
    }