1 回答
TA贡献1829条经验 获得超7个赞
当您使用时,addEventListener您使用匿名函数调用您的函数并在按钮上startGame设置和类。innerHTML
您在 中使用的函数removeEventListener也是匿名的,因此永远不可能与您在addEventListener. 这将导致removeEventListener调用不删除侦听器,因为它根本不知道要删除什么。
因此,创建对(非匿名)函数的引用并将该引用传递给addEventListener和removeEventListener。
const startGameBtn = document.getElementById('start-game');
// Create reference to function.
const onStartClick = () => {
startGameBtn.innerHTML = 'Repeat';
startGameBtn.classList.add('repeat');
startGame();
};
// Use reference in adding and removing the event listeners.
startGameBtn.addEventListener('click', onStartClick);
startGameBtn.removeEventListener('click', onStartClick);
至于其余代码,请记住,无论何时在单击时执行的函数addEventListener 内部使用,都会在每次单击后添加一个新的侦听器。这可能会导致意外行为。
添加回答
举报