我制作了一段代码,用箭头上下垂直移动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
现在你可以once
在options
对象中传递一个布尔值,如下所示: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).
现在你可以once
在options
对象中传递一个布尔值,如下所示: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).
如果要停止所有键事件,只需删除事件侦听器即可.
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); }