【问题标题】:Merge onkeydown functions合并 onkeydown 函数
【发布时间】:2018-03-24 10:13:38
【问题描述】:

我正在尝试合并两次“onkeydown”函数,因为它不能一起工作。代码如下:

功能 - 1

document.onkeydown = checkKeycode
function checkKeycode(e) {
  var event = e || window.event;
  var keycode = event.which || event.keyCode;

  if (keycode == 91) {
     alert("Windows");
  }
}

功能 - 2

document.onkeydown = function(e){
var n = (window.Event) ? e.which : e.keyCode;
if(n==116 || n==27 || n==112 || n==123 || n==17) return false;
}

var keys = {};

 $(document).keydown(function (e) {
  keys[e.which] = true;
 });

 $(document).keyup(function (e) {
   delete keys[e.which];
});

当运行 Function - 1 的页面不工作时。

【问题讨论】:

  • 为什么要为同一个事件使用两个处理程序?这使事情变得比通常更复杂。

标签: javascript function javascript-objects dom-events onkeydown


【解决方案1】:

你只能有一个onkeydown 方法。为了让它工作,你应该使用 eventListener,例如:

document.addEventListener('keyDown', checkKeycode);

然后你可以添加你的第二个函数,它会起作用

【讨论】:

    【解决方案2】:

    这不起作用,因为第二个函数会覆盖第一个函数。

    例子:

    var d;
    d = 1;
    d = 2;
    console.log(d); // prints '2'
    
    var c;
    c = () => { return '1'; }; 
    c = () => { return '2'; };
    console.log(c()); // prints '2'
    

    这些是 JavaScript 基础。

    如果您想监听 onkeydown 事件,您应该使用 EventListeners 并在以下事件上触发您的函数:

    document.addEventListener('keyDown', function1);
    document.addEventListener('keyDown', function2);
    // both function will execute on keyDown event
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-25
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      • 2022-06-15
      • 1970-01-01
      相关资源
      最近更新 更多