Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按时返回'false',按时返回'true'_Javascript_Jquery - Fatal编程技术网

Javascript 按时返回'false',按时返回'true'

Javascript 按时返回'false',按时返回'true',javascript,jquery,Javascript,Jquery,我有一个按钮,当它被点击时,它需要禁用键码49,50,51,52,53,54 当我点击keycode27时,它需要为所有的keyCodes返回true button_size_1.onclick = function() { $("html").bind("keydown", function(e) { if ( e.keyCode == 49 || e.keyCode == 50 || e.keyCode == 51 || e.key

我有一个按钮,当它被点击时,它需要禁用键码49,50,51,52,53,54

当我点击keycode27时,它需要为所有的keyCodes返回true

button_size_1.onclick = function() {
  $("html").bind("keydown", function(e) {
    if (
      e.keyCode == 49 ||
      e.keyCode == 50 ||
      e.keyCode == 51 ||
      e.keyCode == 52 ||
      e.keyCode == 53 ||
      e.keyCode == 54
    ) {
      return false;
      console.log("false");
    } else if (e.keyCode == 27) {
      return true;
      console.log("true");
    }
  });
};
您在返回后编写console.log,它永远不会工作,因为它不会读取随后出现的任何代码。您需要先放置console.log:


所以它确实返回true,只是在控制台中没有显示任何内容,因为这个简单的问题:-

您需要一个变量来告诉您是否按下了keyCode 27。看看下面的例子。每次单击按钮时,KeyCode27 Pressed值都会重置。按下带有keyCode 27的键后,它将变为true,然后对于所有已按下的定义键,它将返回true

button_size_1.onclick = function() {
  let keyCode27Pressed = false;
  $("html").bind("keydown", function(e) {
    if (
      e.keyCode == 49 ||
      e.keyCode == 50 ||
      e.keyCode == 51 ||
      e.keyCode == 52 ||
      e.keyCode == 53 ||
      e.keyCode == 54
    ) {
      if (!keyCode27Pressed) {
          console.log("false");
          return false;
      } else {
          console.log("true");
          return true;
      }
    } else if (e.keyCode == 27) {
      keyCode27Pressed = true;
      console.log("true");
      return true;
    }
  });
};

问题出在哪里?好的,这适用于控制台,但当我按下键代码27时,键代码49、50、51、52、53、54也需要返回true,但它们仍然不是working@YouSeeStefan如果需要为keycode 27和其他所有内容返回true,为什么不在第一个if…|||中编写呢e、 keyCode==27并返回true?我不明白这种情况下的问题是什么。他希望在按下27时启用[返回true的键],并在按下按钮时禁用它们。简单的切换,但问题写得不是很好。是的,这就是我想要的。对不起,问题写得不是很好
button_size_1.onclick = function() {
  let keyCode27Pressed = false;
  $("html").bind("keydown", function(e) {
    if (
      e.keyCode == 49 ||
      e.keyCode == 50 ||
      e.keyCode == 51 ||
      e.keyCode == 52 ||
      e.keyCode == 53 ||
      e.keyCode == 54
    ) {
      if (!keyCode27Pressed) {
          console.log("false");
          return false;
      } else {
          console.log("true");
          return true;
      }
    } else if (e.keyCode == 27) {
      keyCode27Pressed = true;
      console.log("true");
      return true;
    }
  });
};