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 內部使用,都會在每次單擊后添加一個新的偵聽器。這可能會導致意外行為。
添加回答
舉報