我想在键盘输入后运行countup();
和random();
功能。但是我想这是第一次唯一的工作。我的意思是当我第一次点击进入时,它将运行该功能。但是如果这些功能已经运行并再次点击输入,它将永远不会产生任何影响。
这是我的代码:
addEventListener("keydown", function(e){
if (e.keyCode === 13) {
countup();
random();
}
});
任何人都可以帮助我吗?感谢。
答案 0 :(得分:11)
做这样的事情
// Create a named function as your event handler
var myFunction = function (e) {
if (e.keyCode === 13) {
// Do your stuff here
countup();
random();
// Remove event listener so that next time it is not triggered
removeEventListener("keydown", myFunction);
}
};
// Bind "keydown" event
addEventListener("keydown", myFunction);
答案 1 :(得分:3)
Idea是用户的全局变量,在触发事件后设置它。
var is_fired = false;
addEventListener("keydown", function(e){
if (e.keyCode === 13 && is_fired == false) {
countup();
random();
is_fired = true
}
});
答案 2 :(得分:3)
你可以在触发它之后使click事件监听器只工作一次。你只需要向addEventListener()
{once:true}
添加另一个参数,它将按预期工作:
addEventListener("keydown", function(e){
if (e.keyCode === 13) {
countup();
random();
}
},{once: true});
检查我的question是否与您的情况类似。
你也可以使用removeEventListener()
方法,但是你应该先将你的匿名函数定义为myKeyPressed()
之类的外部函数,然后在条件中删除元素中的事件监听器:
element.removeEventListener("keydown", myKeyPressed);
答案 3 :(得分:0)
var is_clicked = false;
addEventListener("keydown", function(e){
if (e.keyCode === 13 && !is_clicked) {
countup();
random();
is_clicked = true;
}
});
答案 4 :(得分:0)
在javascript中有一个removeEventListener函数,但在你调用addEventListener的函数中实现它是很棘手的。 试试这个,它在jsfiddle工作。
addEventListener("keydown", function(e){
if (e.keyCode === 13) {
alert("i did it");
this.removeEventListener('keydown',arguments.callee,false);
}
});
答案 5 :(得分:0)
您可以添加变量来检查keydown的状态。 第一次使用它时,将其设置为true。所以你只会触发一次这个功能。
答案 6 :(得分:0)
var n = document.getElementById("txtInput"),
r = document.getElementById("result"),
loadFlag = true;
n.addEventListener("keyup", function(e) {
if (e.keyCode === 13 && loadFlag ) {
countup(r);
random(r);
loadFlag = false;
}
}, false);
答案 7 :(得分:0)
要将keydown添加到HTML代码中的元素。
element.addEventListener("keydown", event => {
//check if event is cancelable because not all event can be cancelled
if(event.cancelable)
{
//this prevent element from executing the default event when user click
event.preventDefault()
if(event.keycode === 13){ //write your statement here }
}
}