繁体   English   中英

如何在 JavaScript 中的按键上创建开/关 Function

[英]How to create a Toggle on/Off Function on a keypress in JavaScript

我有一个测试脚本来实现我的总体目标的一部分,但我需要创建某种打开和关闭 function 的开关。到目前为止我的代码是:

tgl = "on"

function ToggleON() {
    console.log("on");
    tgl = "off"
}

function ToggleOFF() {
    console.log("off");
    tgl = "on"
}

document.addEventListener('keydown',function(e){
    var key = e.keyCode || e.which;
    if(key == 81){
        if (tgl == "on") {
            ToggleON();
        }

        if (tgl == "off") {
            ToggleOFF();
        } 
    }
});

任何帮助都适用

封闭可以解决问题。

var toggle = function() {
    var on = false;
    return function() {
    if(!on) {
        on = true;
        //Do stuff if ON
        return;
    }
    //Do stuff if OFF
    on = false;
}
}();

toggle(); //Set OFF as default    

document.addEventListener('keydown',function(e) {
   var key = e.keyCode || e.which;
   if(key === 81) {
      toggle();
   }
}, false);

这可能有效。 我将使用布尔值而不是字符串“ on / off”,更短,更简单,更清晰。

var tgl=true;

function toggle() {
    tgl?console.log('on'):console.log('off')
    tgl=!tgl;
}

document.addEventListener('keydown',function(e){
    var key = e.keyCode || e.which;
    if(key == 81)
        toggle();
}

我认为将项目切换为参数是执行此操作的最佳方法。 这使toggle功能对您代码中可能需要toggle功能的其他区域很有用。

var tgl = false;

function toggle(item) {
  item === true ? item = false : item = true;
  return item;
}

document.addEventListener('keydown',function(e){
  var key = e.keyCode || e.which;
  if(key == 81)
    tgl = toggle(tgl);
}

如果您希望它是开/关字符串。

var tgl = "off";

function toggle(item) {
  item === "on" ? item = "off" : item = "on";
  return item;
}

document.addEventListener('keydown',function(e){
  var key = e.keyCode || e.which;
  if(key == 81)
    tgl = toggle(tgl);
}
class Main {
    constructor() {
        this.state = 0;
        this.onLoad();
    }
    onLoad() {
        addEventListener('keydown', event => {
            if (event.key == 'q') {
                this.state ^= 1;
                this.result();
            }
        });
    }
    result() {
        console.log(this.state);
    }
}
const main = new Main();

暂无
暂无

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

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