1

只要按下箭头键,我就想重复运行特定的代码。我试图在一周内尽可能多地了解有关 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:请原谅我糟糕的脚本技巧。我试图快速掌握所有内容,以便将其整合到我正在从事的项目中。

4

2 回答 2

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,而不是 keypress 用于不可打印的键,例如箭头键

于 2013-12-25T06:37:35.827 回答
0

代码中的问题

  1. if-else块不正确。
  2. keydown 事件处理程序中嵌入if-block
  3. 单独定义函数
  4. $(document).keydown是 jQuery,而不是原生 JavaScript,你不需要它。

代码:

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>");
}
于 2013-12-25T06:37:24.263 回答