1

矢印キーが押されている限り、特定のコードを繰り返し実行したい。私は 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. document.write の代わりに innerHTML を使用することをお勧めします。

2.矢印キーなどの印刷できないキーには、キープレスではなくキーダウンを使用します

于 2013-12-25T06:37:35.827 に答える
0

コードの問題

  1. if-elseブロックが正しくありません。
  2. keydown イベント ハンドラーに埋め込まれたif ブロック
  3. 関数を個別に定義する
  4. $(document).keydownネイティブ JavaScript ではなく jQuery です。必要ありません。

コード:

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 に答える