如何使用 for 循环删除多个事件侦听器?

狄俄尼索斯32

我正在创建一个国际象棋程序来测试我的 javascript 能力。它没有任何人工智能,只是计算在任何给定时间可以执行哪些动作,允许玩家执行动作,并改变回合。

这是当前程序的 JSFiddle:https ://jsfiddle.net/1xe7ca00/

游戏机制如下:

1) firstEventListener在所有可以移动的棋子上放置一个事件侦听器:

divChessboardContainer.addEventListener("click", firstEventListener, true);

2) 用户点击符合条件的作品。如果他们愿意,他们可以点击多个部分。

3) 程序从 event.target ( removeAddClassesReturnPieceData )收集数据,检查哪个棋子已被选中并确定该棋子可以执行哪些动作 ( ifWhitePawnifBlackKnight等),并以绿色突出显示建议的动作 ( generateObjectForSecondEventListener )。

4) 每个以绿色突出显示的建议移动都放置了一个事件侦听器:

proposedPositionElement.addEventListener("click", movePieces.bind( null, objectForSecondEventListener, proposedPositionElement ), false);

5) 用户单击建议的移动并执行移动 ( movePieces )。目前它只是交换所选作品的 IMG 标签和建议的位置。

6) 我遇到的问题是,我想从之前在每回合结束时以绿色突出显示的所有方块中删除第二个事件侦听器,但我似乎无法将其删除。我研究了removeEventListener()方法,我知道语法必须非常具体才能正常工作,但我无法弄清楚我做错了什么。这是我创建的一个 for 循环,用于尝试删除事件侦听器(不起作用):

for ( let i = 0; i < allListTags.length; i += 1 ) {

    let proposedPositionElement = allListTags[i];

    console.log(proposedPositionElement);

    proposedPositionElement.removeEventListener("click", movePieces, false);

}

谁能帮我吗?

瑞安·哈纳坎普

在第 4 步中,您将一个事件绑定到 movePieces.bind(...),而在第 6 步中,您尝试删除 movePieces 侦听器。这些是不同的功能。此外,尝试删除 movePieces.bind(...) 也不起作用,因为这将创建第三个函数。您需要在步骤 4 中的某处存储绑定函数引用,并在步骤 5 中检索它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用循环创建多个事件侦听器

来自分类Dev

如何正确删除多个事件侦听器?

来自分类Dev

如何删除在TypeScript中使用“ this”的事件侦听器?

来自分类Dev

如何从JavaScript中的多个元素中删除事件侦听器?

来自分类Dev

使用单个事件侦听器而不是多个事件侦听器

来自分类Dev

如何删除Aurelia中的事件侦听器?

来自分类Dev

如何删除从各个要素动态创建的事件侦听器?

来自分类Dev

如何在EaselJS对象中删除事件侦听器

来自分类Dev

如何在事件发生之前删除侦听器?

来自分类Dev

如何删除 iFrame 添加的 beforeunload 事件侦听器?

来自分类Dev

如何从reactjs中的文档中删除事件侦听器

来自分类Dev

如何从父级中删除jQuery事件侦听器而不删除类似的侦听器?

来自分类Dev

如何避免在文本字段上使用多个事件侦听器?

来自分类Dev

使用 JavaScript 的事件委托设置删除事件侦听器的有效方法是什么

来自分类Dev

如何简化 javascript 事件侦听器?

来自分类Dev

如何在Firefox调试器中删除事件侦听器?

来自分类Dev

Angular.js:如何防止在控制器刷新时创建多个事件侦听器

来自分类Dev

如何使用jquery .each()添加单个事件侦听器?

来自分类Dev

使用Doctrine ORM,Doctrine PHPCR-ODM和事件侦听器的循环依赖

来自分类Dev

如何删除addClsOnOver侦听器ExtJS

来自分类Dev

如何从react.js元素中删除特定的事件侦听器

来自分类Dev

如何在Java脚本中删除“ mouseup”事件侦听器

来自分类Dev

如何在Java脚本中删除“ mouseup”事件侦听器

来自分类Dev

当游戏在战舰上结束时,如何从所有<tds>中删除事件侦听器?

来自分类Dev

如何能够在保持对“this”的访问的同时删除事件侦听器?

来自分类Dev

如果回调是参数化箭头函数,如何删除事件侦听器

来自分类Dev

使用RxJS的多个关键侦听器

来自分类Dev

同一窗口事件的多个侦听器如何影响性能?

来自分类Dev

如何将多个click事件侦听器应用于android中的图像

Related 相关文章

  1. 1

    使用循环创建多个事件侦听器

  2. 2

    如何正确删除多个事件侦听器?

  3. 3

    如何删除在TypeScript中使用“ this”的事件侦听器?

  4. 4

    如何从JavaScript中的多个元素中删除事件侦听器?

  5. 5

    使用单个事件侦听器而不是多个事件侦听器

  6. 6

    如何删除Aurelia中的事件侦听器?

  7. 7

    如何删除从各个要素动态创建的事件侦听器?

  8. 8

    如何在EaselJS对象中删除事件侦听器

  9. 9

    如何在事件发生之前删除侦听器?

  10. 10

    如何删除 iFrame 添加的 beforeunload 事件侦听器?

  11. 11

    如何从reactjs中的文档中删除事件侦听器

  12. 12

    如何从父级中删除jQuery事件侦听器而不删除类似的侦听器?

  13. 13

    如何避免在文本字段上使用多个事件侦听器?

  14. 14

    使用 JavaScript 的事件委托设置删除事件侦听器的有效方法是什么

  15. 15

    如何简化 javascript 事件侦听器?

  16. 16

    如何在Firefox调试器中删除事件侦听器?

  17. 17

    Angular.js:如何防止在控制器刷新时创建多个事件侦听器

  18. 18

    如何使用jquery .each()添加单个事件侦听器?

  19. 19

    使用Doctrine ORM,Doctrine PHPCR-ODM和事件侦听器的循环依赖

  20. 20

    如何删除addClsOnOver侦听器ExtJS

  21. 21

    如何从react.js元素中删除特定的事件侦听器

  22. 22

    如何在Java脚本中删除“ mouseup”事件侦听器

  23. 23

    如何在Java脚本中删除“ mouseup”事件侦听器

  24. 24

    当游戏在战舰上结束时,如何从所有<tds>中删除事件侦听器?

  25. 25

    如何能够在保持对“this”的访问的同时删除事件侦听器?

  26. 26

    如果回调是参数化箭头函数,如何删除事件侦听器

  27. 27

    使用RxJS的多个关键侦听器

  28. 28

    同一窗口事件的多个侦听器如何影响性能?

  29. 29

    如何将多个click事件侦听器应用于android中的图像

热门标签

归档