javascript - 如何修复:每次用户单击按钮时 CSS 动画都会重置
问题描述
我的页面上有 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)
解决方案
您需要使用“this”,如果您的按钮位于“div”中,请尝试编写:
this.parentElement.className = 'animated infinite bounce delay-2s;
代替:
matchedDiv.className = 'animated infinite bounce delay-2s;'
推荐阅读
- scala - YAML azure-pipelines.yml 语法为所有步骤添加 azureSubscription
- ios - 将 UIView 动画与键盘动画同步
- asp.net-core - Blazor 中的自定义身份验证中间件 - 如何查看请求是否为匿名页面?
- swift - 更新 UIView heightAnchor
- tailwind-css - 您可以从顺风的边距和填充类中删除破折号吗?
- json - 如果子数组包含 n 次出现的带有 jq 的字符串,则排除对象
- python - Altair-即重复和变换
- data-structures - 在我的二进制堆/优先级队列实现中实现删除时遇到问题
- angular - 在 minikube 上部署 Angular App 并通过端口公开
- jsonschema - Understanding JSON Schema errors using ajv