在同一个页面中,我有多个部分。
将显示一个section
,这将使用active
class
发生。
在同一个页面中,我有li
按钮1,2和3,当我点击其中一个时,与之相关的section
出现,旧的消失。为此,我使用JavaScript。
在同一页中,我还有一个下一页和上一页按钮。当我点击下一步按钮时,下一个section
应该出现,旧的应该消失。
与此节相关的li
也应该有active
class
,与前一节相同:当我点击它时,它应该转到旧的section
,当前应该消失,li
class
应该是active
。
当我在第一个section
的上一个按钮应该消失,当我在最后一节的下一个按钮应该消失。
如何使用Javascript以这种方式实现下一个和上一个按钮的这种行为?
任何帮助请!!?
let tab = document.querySelector(".nav li");
let tabs = document.querySelectorAll(".nav li");
let tabsArray = Array.from(tabs);
let section = document.querySelectorAll(".section");
let sectionArray = Array.from(section);
let nextButton = document.querySelector(".next");
let prevButton = document.querySelector(".previous");
let current = 0;
tabsArray.forEach((ele) => {
ele.addEventListener("click", function (e) {
tabsArray.forEach((ele) => {
ele.classList.remove("active");
});
e.currentTarget.classList.add("active");
sectionArray.forEach((sec) => {
sec.classList.remove("active");
});
if(e.currentTarget.dataset.cont =='r1'){
prevButton.classList.add("disable");
}else{
prevButton.classList.remove("disable");
}
if (
document.querySelector("#" + e.currentTarget.dataset.cont) ==
sectionArray[sectionArray.length - 1]
) {
nextButton.classList.add("disable");
} else {
nextButton.classList.remove("disable");
}
document.querySelector('#' + e.currentTarget.dataset.cont).classList.add("active");
});
});
.section {
display: none;
}
.section.active{
display: block;
}
ul {
list-style: none;
margin:0;
padding: 0;
display: flex;
align-items: center;
}
ul li {
background: #ccc;
padding: 10px 15px;
margin-left: 6px;
border-radius: 50%;
cursor: pointer;
opacity: .5;
}
ul li.active{
opacity: 1 !important;
}
.next,
.previous {
padding: 15px 10px;
border-radius: 6px;
background: deepskyblue;
color: white;
border:0;
outline: none;
cursor: pointer;
width: 100px;
}
.next.disable,
.previous.disable{
cursor: none;
opacity: .5;
}
<ul class="nav">
<li class="active" data-cont="r1">1</li>
<li data-cont="r2">2</li>
<li data-cont="r3">3</li>
</ul>
<section id="r1" class="section section-one active">
<h2>section 1</h2>
</section>
<section id="r2" class="section section-two">
<h2>section 2</h2>
</section>
<section id="r3" class="section section-three">
<h2>section 3</h2>
</section>
<button class="previous disable" id="previous">Previous</button>
<button class="next" id="next">Next</button>
5条答案
按热度按时间uurv41yg1#
建议有一个按钮集合和另一个部分,通过索引连接两者,这也需要跟踪。如果我们拥有所有这些,那么下一步就是增加索引,而上一步是减少索引。我不会让previous和next消失,即使问题要求我这样做。我使用
disable
类。如果我们想让它们出现/消失,那么我们可以使用invisible
class
。xiozqbni2#
我希望我能很好地理解你的问题,下面的解决方案会有所帮助。
它被分解为小函数,目标是一个函数做一件事。
下面是一个基于类的解决方案,通过一些CSS更改将内容居中:
vbopmzt13#
如果你想让“上一页”/“下一页”按钮在不改变布局的情况下消失,那么你可以将那些按钮设置为“可见性:隐藏;默认情况下,将其更改为“visibility:visible;”的情况下,将触发该事件。
你也可以使用“button”标签代替“li”标签作为顶部导航栏。
下面是我的代码:
vd2z7a6w4#
对不起,不擅长纯Javascript,但为了便于可视化,这应该是一个过程
您可以通过获取
data-cont
属性来标识当前部分,使用jQuery,代码将是$(ele).attr('data-cont')
,它将返回任何r1
、r2
或r3
fxnxkyjh5#