2015-09-14 71 views
0

这里是我的代码的onkeydown不工作的JavaScript

document.onkeydown = function (a) { 
    if (a.which == 13) { 
     alert("Not Anymore"); 

    } 
} 

document.onkeydown = function (b) { 
    if (b.which == 65) { 
     auto(); 
    } 
} 

document.onkeydown = function (c) { 
    if (c.which == 83) { 
     auto2(); 

    } 
} 

只有最后一个片段的作品有人可以解释为什么发生这种情况 检查我的网站,你可以看到它不是当您按下一个工作,但是当你按b键它是

谢谢,我很欣赏的帮助和反馈

+2

事件处理程序被最后覆盖,所以只有最后的作品 – Tushar

+0

我该如何解决这个问题? –

+0

['document.addEventListener('...');'](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)将是另一种选择。 – Xufox

回答

2

你绑定document多次对同一事件。因此,后面的事件处理程序就像之前的事件处理程序一样覆盖之前的事件处理程序。您只需绑定一个事件处理程序并在其中使用if... else

您可以使用此

document.onkeydown = function (e) { 
    if (e.which == 13) { 
     alert("Not Anymore"); 
    } else if (e.which == 65) { 
     auto(); 
    } else if (e.which == 83) { 
     auto2(); 
    } 
}; 

此外,使用addEventListener代替onkeydown

document.addEventListener('keydown', function (a) { 
    if (a.which == 13) {} 
    ... 
}, false); 
+1

为了扩展这一点,现在使用事件监听器是一种常见的最佳实践; document.addEventListener('keydown',function(e){}) –

+0

非常感谢你 –

+0

@DuncanMilrad不客气!如果你的问题解决了,请接受答案 – Tushar