1 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
當(dāng)您使用時(shí),addEventListener您使用匿名函數(shù)調(diào)用您的函數(shù)并在按鈕上startGame設(shè)置和類。innerHTML
您在 中使用的函數(shù)removeEventListener也是匿名的,因此永遠(yuǎn)不可能與您在addEventListener. 這將導(dǎo)致removeEventListener調(diào)用不刪除偵聽器,因?yàn)樗静恢酪獎(jiǎng)h除什么。
因此,創(chuàng)建對(非匿名)函數(shù)的引用并將該引用傳遞給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);
至于其余代碼,請記住,無論何時(shí)在單擊時(shí)執(zhí)行的函數(shù)addEventListener 內(nèi)部使用,都會在每次單擊后添加一個(gè)新的偵聽器。這可能會導(dǎo)致意外行為。
添加回答
舉報(bào)