Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.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 启用/禁用EventListener_Javascript_Dom Events_Event Listener - Fatal编程技术网

Javascript 启用/禁用EventListener

Javascript 启用/禁用EventListener,javascript,dom-events,event-listener,Javascript,Dom Events,Event Listener,我正在JS上构建一个国际象棋游戏,棋盘上的每一块棋子都是“可点击的”,我在上面添加了一个EventListener('click'),我还添加了一个EventListener('click'),以选择棋子应该放在哪里 但是我需要知道是否有任何类型的中断器与EventListener相关,以便在启用EventListener和禁用它之间切换。例如,当某个变量为真时,我只会选择白色的可点击部分,否则选择黑色的可点击部分。与其考虑如何单独启用或禁用侦听器,不如让所有的点击都通过同一个侦听器,让监听器首

我正在JS上构建一个国际象棋游戏,棋盘上的每一块棋子都是“可点击的”,我在上面添加了一个
EventListener('click')
,我还添加了一个
EventListener('click')
,以选择棋子应该放在哪里


但是我需要知道是否有任何类型的中断器与
EventListener
相关,以便在启用
EventListener
和禁用它之间切换。例如,当某个变量为真时,我只会选择白色的可点击部分,否则选择黑色的可点击部分。

与其考虑如何单独启用或禁用侦听器,不如让所有的点击都通过同一个侦听器,让监听器首先检查电路板状态,看看是否允许点击该位置。如果没有,返回,不要做任何事情。如果是,请继续

例如,您可以有如下内容:

const board = [
  [ // row 1
    { // square 1A
      piece: 'rook',
      owner: 'white',
    }
    // ...
然后,在监听器内部,导航到
板中单击的方块
,并检查
所有者
是否对应于当前播放机

// inside listener:
// you will need to implement logic to get the row and column
// from a clicked button
const clickedSquare = board[i][j];
if (clickedSquare.owner !== currentPlayer) {
  return;
}
// rest of function

当回合结束时,只需将
currentPlayer
'black'
切换到
'white'
或再切换回来。

为什么不在一个事件处理程序内的
if
语句中检查该变量的值呢?但我如何重新切换到活动的EventListener?因为我可能不得不在“只能点击白色的”和“只能点击黑色的”之间切换“只能点击白色的”。。。。我不确定我是否理解第二个问题。我的意思和@CertainPerformance的回答完全一样——使用一个事件侦听器,在决定是否执行函数的其余部分时,只需检查其中变量的值。