Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 只要按了特定的键,就在循环中运行函数_Javascript_Keydown_Keyboard Input - Fatal编程技术网

Javascript 只要按了特定的键,就在循环中运行函数

Javascript 只要按了特定的键,就在循环中运行函数,javascript,keydown,keyboard-input,Javascript,Keydown,Keyboard Input,只要按下箭头键,我就想反复运行特定的代码段。我试图在一周内尽可能多地学习JavaScript,并编写了这段代码(见下文),但它不起作用。现在我正试图在页面上打印一些东西,但在最终实现中,我需要重复运行一个文件。我还想知道一种打印新执行函数的结果而不删除屏幕上已有内容的方法 <html> <head> <title> </title> </head> <body> <script> document.wr

只要按下箭头键,我就想反复运行特定的代码段。我试图在一周内尽可能多地学习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>

document.write(“脚本加载的
”); document.onkeydown=initiate; 功能启动{ $(文档).keydown(函数(事件){ keyCode=event.keyCode; event.preventDefault(); }); } 如果(键代码==38){ setInterval({a()},100); 函数a(){ 文档。写入(“向上键”
”; } else if(keyCode==39){ setInterval({b()},100); 函数b(){ 文档。写入(“右键”
”; } 否则如果(键代码==40){ setInterval({c()},100); 函数c(){ 文档。写下(“向下键”
”; } else if(keyCode==41){ setInterval({d()},100); 函数d(){ 文档。写入(“左键”
”; }
附言:请原谅我糟糕的脚本编写技巧。为了将它集成到我正在进行的项目中,我试图匆忙地掌握所有东西。

您的代码中存在问题

  • if-else
    块不正确
  • 嵌入键控事件处理程序中的if块
  • 单独定义函数
  • $(document).keydown
    是jQuery,不是原生JavaScript,您不需要它
  • 代码:

    document.write(“脚本加载的
    ”); document.onkeydown=启动; 函数初始化(){ keyCode=window.event.keyCode; event.preventDefault(); 如果(键代码==38){ window.setInterval({ () }, 100); }else if(keyCode==39){ window.setInterval({ b() }, 100); }否则如果(键代码==40){ window.setInterval({ c() }, 100); }else if(keyCode==41){ window.setInterval({ d() }, 100); } } 函数a(){ 文档。写入(“向上键”
    ”; } 函数b(){ 文档。写入(“右键”
    ”; } 函数c(){ 文档。写下(“向下键”
    ”; } 函数d(){ 文档。写入(“左键”
    ”; }
    请稍微整理一下您的代码。您正在使事情变得不必要的复杂

    定义所有函数a、b、c、d,然后使用以下代码

    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;
        }
    };
    
    document.onkeydown=function(){
    开关(window.event.keyCode){
    案例37:
    窗口设置间隔(a,100);
    文档。写入(“左键”
    ”; 打破 案例38: 窗口设置间隔(a,100); 文档。写入(“向上键”
    ”; 打破 案例39: 窗口设置间隔(c,100); 文档。写入(“右键”
    ”; 打破 案例40: 窗口设置间隔(d,100); 文档。写下(“向下键”
    ”; 打破 } };
    注:

    1.更好的做法是使用innerHTML而不是document.write

    2.对于不可打印的键(如箭头键),请使用keydown,而不是keypress

    $(文件).keydown是jQuery,不是原生JavaScript,因此您应该包括jQuery库。当您声明
    initiate
    时,需要添加括号。我认为如果
    语句嵌入到keydown事件处理程序中,这对我来说没有意义。
    document.onkeydown=initiate;
    对我来说也没有意义,由于您正在
    initiate
    中绑定
    键下
    事件处理程序。您可以在定义initiate后调用它。
    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;
        }
    };