雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

不使用jquery只执行一次事件侦听器函数

2024-07-30 64

我制作了一段代码,用箭头上下垂直移动6个项目前面的元素.当按下enter时,我将加载一组带有该项目的图像.代码工作正常,但在输入命中后,这段代码需要停止,所以我可以用箭头键做其他事情并输入.现在它只是在输入被击中后继续前进.我尝试使用var检查,但是我似乎无法从交换机内部更改变量.有人知道如何使这项工作?

?
var enterPushed = false; if(!enterPushed){           document.addEventListener('keydown', function(event){    if(event.keyCode == 38){        console.log("up");        if(margTop > 122){            margTop = margTop - 60;            marginTop();            i = i - 1;            bliep.play();        }    }    if(event.keyCode == 40){        console.log("down");        if(margTop < 422){            margTop = margTop + 60;            marginTop();            i = i + 1;            bliep.play();           }    }    if(event.keyCode == 13){        switch(i){            case 1:                enterPushed = true;                startup(1);                     break;            case 2:                enterPushed = true;                startup(2);                         break;            case 3:                enterPushed = true;                startup(3);                     break;            case 4:                enterPushed = true;                startup(4);                     break;            case 5:                enterPushed = true;                startup(5);                         break;            case 6:                enterPushed = true;                startup(6);                     break;        }    }});}








Mati Tucci.. 9


现在你可以onceoptions对象中传递一个布尔值,如下所示:document.body.addEventListener('click', _ => console.log('once'), {once: true});

资料来源: https ://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener

浏览器兼容性: Chrome 55,Firefox 50,Safari(WebKit).



1> Mati Tucci..:


现在你可以onceoptions对象中传递一个布尔值,如下所示:document.body.addEventListener('click', _ => console.log('once'), {once: true});

资料来源: https ://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener

浏览器兼容性: Chrome 55,Firefox 50,Safari(WebKit).




2> Kolby..:


如果要停止所有键事件,只需删除事件侦听器即可.

?
var enterPushed = false; var handleKeyDown = function(){    if(event.keyCode == 38){        console.log("up");    }    if(event.keyCode == 40){        console.log("down");    }    if(event.keyCode == 13){      console.log('enter');      document.removeEventListener('keydown', handleKeyDown);          }}; document.addEventListener('keydown', handleKeyDown);

如果你想停止只听输入或特定键,你可以添加一个标志并检查它和键码.这看起来就像你在这里几乎所做的那样.我完成了逻辑并减少了代码:

?
if(event.keyCode == 13 && enterPushed){   enterPushed = true;   startup(i);  }



这不是`.removeEventListener()`的工作原理.您需要提供原始功能.

更新于:3个月前
赞一波!2

文章评论

评论问答