亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何解決:每次用戶單擊按鈕時都會重置 CSS 動畫

如何解決:每次用戶單擊按鈕時都會重置 CSS 動畫

DIEA 2021-12-02 19:45:53
我的頁面上有 3 個按鈕(男性、女性、非性別),這些按鈕會導致字符在頁面上彈跳。當前,當用戶單擊第二個按鈕時,第一個按鈕的字符會不斷彈跳。我如何做到只有一個按鈕的字符會彈跳?下面的 JavaScript 代碼:const allDivs = Array.from(document.querySelectorAll('div'))const mainHeader = document.querySelector('header')let maleButton = document.createElement('button')maleButton.textContent = 'Male Characters'maleButton.addEventListener('click', () => {    maleCharacters.forEach(character => {        let matchedDiv = allDivs.find((oneDiv) => {            return oneDiv.firstChild.textContent === character.name        })        //matchedDiv.setAttribute("style", "display: none;")        matchedDiv.className = 'animated infinite bounce delay-2s'    })});let femaleButton = document.createElement('button')femaleButton.textContent = 'Female Characters'femaleButton.addEventListener('click', () => {    femaleCharacters.forEach(character => {        let matchedDiv = allDivs.find((oneDiv) => {            return oneDiv.firstChild.textContent === character.name        })        //matchedDiv.setAttribute("style", "display: none;")        matchedDiv.className = 'animated infinite bounce delay-2s;'    })});let otherButton = document.createElement('button')otherButton.textContent = 'Non-Gender Characters'otherButton.addEventListener('click', () => {    otherCharacters.forEach(character => {        let matchedDiv = allDivs.find((oneDiv) => {            return oneDiv.firstChild.textContent === character.name        })        //matchedDiv.setAttribute("style", "display: none;")        matchedDiv.className = 'animated infinite bounce delay-2s;'    })});mainHeader.appendChild(maleButton)mainHeader.appendChild(femaleButton)mainHeader.appendChild(otherButton)
查看完整描述

2 回答

?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

這很粗糙,因為我沒有完整的代碼,但大致如下:


const allDivs = Array.from(document.querySelectorAll('div'))


const mainHeader = document.querySelector('header')


function clearAnimations() {

  [maleCharacters, femaleCharacters, otherCharacters].forEach(c => 

    c.forEach(character => allDivs.find((oneDiv) => 

      oneDiv.firstChild.textContent === character.name).className = '';

  });

}


let maleButton = document.createElement('button')

maleButton.textContent = 'Male Characters'

maleButton.addEventListener('click', () => {

    clearAnimations();

    maleCharacters.forEach(character => {

        let matchedDiv = allDivs.find((oneDiv) => {

            return oneDiv.firstChild.textContent === character.name

        })

        //matchedDiv.setAttribute("style", "display: none;")

        matchedDiv.className = 'animated infinite bounce delay-2s'

    })

});


let femaleButton = document.createElement('button')

femaleButton.textContent = 'Female Characters'

femaleButton.addEventListener('click', () => {

    clearAnimations();

    femaleCharacters.forEach(character => {

        let matchedDiv = allDivs.find((oneDiv) => {

            return oneDiv.firstChild.textContent === character.name

        })

        //matchedDiv.setAttribute("style", "display: none;")

        matchedDiv.className = 'animated infinite bounce delay-2s;'

    })

});


let otherButton = document.createElement('button')

otherButton.textContent = 'Non-Gender Characters'

otherButton.addEventListener('click', () => {

    clearAnimations();

    otherCharacters.forEach(character => {

        let matchedDiv = allDivs.find((oneDiv) => {

            return oneDiv.firstChild.textContent === character.name

        })

        //matchedDiv.setAttribute("style", "display: none;")

        matchedDiv.className = 'animated infinite bounce delay-2s;'

    })

});


mainHeader.appendChild(maleButton)

mainHeader.appendChild(femaleButton)

mainHeader.appendChild(otherButton)


查看完整回答
反對 回復 2021-12-02
?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

您需要使用“this”,如果您的按鈕在“div”中,請嘗試編寫:

 this.parentElement.className = 'animated infinite bounce delay-2s;

代替:

 matchedDiv.className = 'animated infinite bounce delay-2s;'


查看完整回答
反對 回復 2021-12-02
  • 2 回答
  • 0 關注
  • 226 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號