第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

如何刪除事件監(jiān)聽器。removeEventListener 不起作用

如何刪除事件監(jiān)聽器。removeEventListener 不起作用

長風(fēng)秋雁 2023-06-15 17:42:44
我有一個(gè)“開始游戲”按鈕,當(dāng)你點(diǎn)擊游戲開始時(shí)按鈕上的文字變?yōu)椤爸貜?fù)” - 隨機(jī)選擇一張紙牌并播放紙牌的聲音,你需要猜測這是哪張卡。但是當(dāng)游戲開始時(shí),如果你按下這個(gè)按鈕,那么它應(yīng)該已經(jīng)作為復(fù)讀機(jī)工作了,也就是說你可以再次聽到這個(gè)詞。如何在按下按鈕時(shí)刪除新單詞的播放,并重復(fù)已經(jīng)發(fā)音的單詞。RemoveEventListener 不起作用。當(dāng)我點(diǎn)擊它時(shí),它會同時(shí)播放新舊單詞const startGameBtn = document.getElementById('start-game');startGameBtn.addEventListener('click', function() {   startGameBtn.innerHTML = 'Repeat';  startGameBtn.classList.add('repeat');    startGame(); }) startGameBtn.removeEventListener('click', function() {  startGame()});function startGame() {  let randomCard = createRandomCard();   randomCard.querySelector('audio').play();   document.getElementById('category').addEventListener('click', (e) => {    if(document.body.classList.contains('game-mode')) {      if(e.target.closest('.card-item') === randomCard) {        e.target.closest('.card-item').classList.add('checked-card');          randomCard = createRandomCard();        setTimeout(function(){ randomCard.querySelector('audio').play(); }, 2500);        } else {        let error = 'audio/error.mp3';        playAudio(error)      }        }     })   document.querySelector('#start-game').addEventListener('click', function() {    randomCard.querySelector('audio').play();  })}
查看完整描述

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)致意外行為。


查看完整回答
反對 回復(fù) 2023-06-15
  • 1 回答
  • 0 關(guān)注
  • 245 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號