繁体   English   中英

JavaScript函数未注册按键

[英]Javascript function not registering keypress

我试图使按下Enter键时停止的功能停止 ,但是由于某种原因,它没有注册我的enter变量从false到true的切换。 我不知道这是范围问题,关闭问题还是约束性问题,我在各个论坛中四处寻找并尝试了许多不同的解决方案,但似乎没有任何效果……

function positionArrow(arrow) {
  var enter = false;
  $(document).keypress(function(e) {
      if(e.which == 13) {
        enter = true;
      }
  });
  console.log(enter);
  if (enter == true) {
    return;
  } else {
    $(arrow.element).css({
        left: arrow.x - arrowWidth / 2,
        top: arrow.y - arrowHeight / 2
      });
    rotate(arrow.element, arrow.angle);
  }
}

您应该具有要处理程序中运行的代码,并且处理程序也应位于“ positionArrow”函数之外。 尝试替换enter = true;

$(arrow.element).css({
    left: arrow.x - arrowWidth / 2,
    top: arrow.y - arrowHeight / 2
});
rotate(arrow.element, arrow.angle);

并将处理程序声明移到函数之外。 代码应如下所示

  $(document).keypress(function(e) {
      if(e.which == 13) {
        positionArrow(arrow);
      }
  }
  function positionArrow(arrow) {
    $(arrow.element).css({
        left: arrow.x - arrowWidth / 2,
        top: arrow.y - arrowHeight / 2
      });
    rotate(arrow.element, arrow.angle);
   }

我设法使其与下面的方法一起使用。 enter了一个全局变量并创建了一个单独的函数。 在此方法奏效的同时,我觉得可能有更好的解决方案或对问题的根源有更好的阐述。

var enter = false;    

function stopArrow(){
    $(document).keypress(function(e) {
        if(e.which == 13) {
          enter = true;
        }
    });
}

stopArrow();

function positionArrow(arrow) {
  if (enter == true) {
    return;
  } else {
    $(arrow.element).css({
        left: arrow.x - arrowWidth / 2,
        top: arrow.y - arrowHeight / 2
      });
    rotate(arrow.element, arrow.angle);
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM