如果我匿名添加事件监听器,如何删除事件监听器? [重复]

问题描述 投票:0回答:1

此问题已经在这里有了答案:

[下面,我做了一个函数,可以在我通过JavaScript和DOM操作创建的游戏中使用炸弹,在游戏的每次迭代中事件堆叠在一起存在一个错误,因此我的解决方案是在每次迭代中清除事件,我该怎么做?

function bombUse() {
  document.addEventListener("keydown", function(event) {
  if (event.code === 'space') {
      if (game.bombs > 0) {
        game.timer = 3000
        game.bombs -= 1
        console.log(`there are ${game.bombs} bombs left`)
        let getBombs = document.querySelector("#bombs")
        let numberOfBombs = getBombs.children
        console.log(`there are ${numberOfBombs.length} bomb images`)
        if (numberOfBombs.length > 0) {
          getBombs.removeChild(getBombs.childNodes[0])
          console.log(`there are only ${numberOfBombs.length} bomb images left`)
        }
        let enemyList = document.querySelectorAll('.pixelcat')
        enemyDeathSound()
        game.points += enemyList.length
        for (let i = 0; i < enemyList.length; i++) {
          enemyList[i].removeEventListener('click', clickEnemy)
          enemyList[i].src = 'assets/spaceexplosion.gif'
          game.totalEnemies -= 1
          enemyList[i].remove()
          let pointsUpdate = document.querySelector("#points")
          pointsUpdate.innerHTML = `${game.points} CAT DESTRUCTIONS`
        }
      }
  }})
}

javascript dom
1个回答
0
投票

The EventTarget.removeEventListener()方法将EventTarget删除为先前在EventTarget.addEventListener()]中注册的事件侦听器

检查文档Remove Eventlistener

© www.soinside.com 2019 - 2024. All rights reserved.