javascript - 切换多个类
问题描述
所以感谢你们对我的帮助。你让我想到了我在做什么,所以我将我的代码缩短为我认为好的代码,但在代码很长但现在可以工作之前,虽然没有错误,但代码很短但不适用于第一个面板。所以也许是环形?所以html是这样的:
<div class="container">
<div class="down sound">
<img id="batman" class="image-1-panel active" src="flash.svg">
<img class="image-2-panel notactive" src="http://cdn.playbuzz.com/cdn/3c096341-2a6c-4ae6-bb76-3973445cfbcf/6b938520-4962-403a-9ce3-7bf298918cad.jpg">
<p class="image-3-panel notactive">Bane</p>
<p>Joker</p>
<p>Alfred</p>
</div>
然后重复 3 个类似的容器。在活动和非活动的 css 上,我有:
.notactive{
visibility: hidden;
position: relative;
}
.active{
position: absolute;
}
在js中:
document.querySelector('#batman').addEventListener('click', batman);
function batman(){
document.querySelector('.image-1-panel').classList.toggle('.notactive');
document.querySelector('.image-1-panel').classList.toggle('.active');
document.querySelector('.image-2-panel').classList.toggle('.active');
document.querySelector('.image-2-panel').classList.toggle('.notactive');
}
但是什么也没有发生……我还有一个 for 循环声音,它仍然可以正常工作,但是面板没有移动。有人可以在这里分享一些光吗?我在一个循环中思考并按照函数尝试它,但也没有那么清楚地工作我错过了一些东西,也许是我试图捕捉的错误元素?上面我有我的问题,没有编辑,你可以理解我的意思。谢谢你的帮助
我有 4 个面板。在每个面板中,将有 3 个图像/文本一个接一个。因此,当我按下面板 1 时,面板 2,3 和 4 将转动以显示图像。按下面板 2,面板 1、3 和 4 将转动显示不同的图像,然后按下面板 1。其余的面板也是如此。所以我开始为第一个面板创建一个函数。它有效,但有什么方法可以让它变得简单吗?这是代码:
function guessWho(){
document.querySelector('.image-1-panel').classList.toggle('notactive');
document.querySelector('.image-1-panel').classList.toggle('active');
document.querySelector('.image-2-panel').classList.toggle('active');
document.querySelector('.image-2-panel').classList.toggle('notactive');
document.querySelector('.image-3-panel').classList.toggle('active');
document.querySelector('.image-3-panel').classList.toggle('notactive');
document.querySelector('.image-4-panel').classList.toggle('active');
document.querySelector('.image-4-panel').classList.toggle('notactive1');
document.querySelector('.image-5-panel').classList.toggle('active');
document.querySelector('.image-5-panel').classList.toggle('notactive');
document.querySelector('.image-6-panel').classList.toggle('active');
document.querySelector('.image-6-panel').classList.toggle('notactive2');
document.querySelector('.image-7-panel').classList.toggle('active');
document.querySelector('.image-7-panel').classList.toggle('notactive');
document.querySelector('.image-8-panel').classList.toggle('active');
document.querySelector('.image-8-panel').classList.toggle('notactive3');
}
有什么办法可以把这个简单吗?我不想使用任何框架,所以它必须是纯 js。谢谢
解决方案
使用循环。
for (var i = 0; i <= 8; i++) {
document.querySelector(`.image-${i}-panel`).classList.toggle('notactive');
document.querySelector(`.image-${i}-panel`).classList.toggle('active');
}
推荐阅读
- go - 为什么在打印结构字段时不调用我的类型的 String() 方法?
- reactjs - react js中的eventbrite入门
- javascript - 通过 splash 评估 javascript 时如何避免 CSP 错误?
- logging - 具有 ILoggerFactory 和 Autofac 注入服务的自定义 Serilog 丰富器
- python - Python 缩进辅助
- kubernetes-helm - 在 HELM 模板定义函数中使用变量
- firebase - 在多个屏幕中调用相同的 onAuthStateChanged 监听器会创建新的监听器?
- listview - SwipeView 仅在执行滑动后对某些行做出响应!(直到页面手动导航)
- html - 从 jQuery 和 Thymeleaf 中的输入计算值?
- snowflake-cloud-data-platform - 带有更改日志的雪花建模,仅包含新记录和已删除记录