In the same page I have multiple sections.
One section
will be shown and this will happen using an active
class
.
In the same page I have li
buttons 1, 2 and 3 and when I click on one of them the section
related to it appears and the old one disappears. For that purpose I'm using Javascript.
Also in the same page I have a next and previous button. When I click on the next button the next section
should appear and the old one should disappear.
And also the related li
to the section should have the active
class
, the same thing for the previous: when I click on it it should go to the old section
and the current should disappear and the li
class
should be active
.
When I'm in the first section
the previous button should disappear and when I'm in the last section the next button should disappear.
How can I implement this behavior for the next and previous buttons in this way using Javascript?
Any Help Please!!?
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>