簡體   English   中英

香草 JavaScript Next & prev Navigation

[英]Vanilla JavaScript Next & prev Navigation

我准備用下一個和上一個按鈕制作推薦 slider,但不幸的是無法使其完美運行。 嘗試了很多東西,但我的代碼有問題需要你的幫助注意:我還在學習 Javascript。

這是我的代碼:

 let nextBtn = document.querySelector('.testi-nav.next'); let prevBtn = document.querySelector('.testi-nav.prev'); let testiBox = document.querySelectorAll('.testi-box') nextBtn.addEventListener('click', (e) => { testiBox.forEach(testi => { testi.nextElementSibling.style.display = 'block' testi.style.display = 'none'; }) }) prevBtn.addEventListener('click', (e) => { testiBox.forEach(testi => { testi.prevElementSibling.style.display = 'block'; testi.style.display = 'none'; }) })
 .testi-box { padding: 80px; background-color: #fff; overflow: hidden; box-shadow: 0px 0px 8px 2px rgba(196, 194, 196, 0.815); position: relative; display: none; }.testi-box:first-child { display: block; }
 <div class="testimonial"> <div class="testi-nav"> <span class="nav-button prev"><i class="fas fa-angle-left"></i></span> <span class="nav-button next"><i class="fas fa-angle-right"></i></span> </div> <div class="container"> <div class="testi-box"> <div class="testi-img"> <div class="person"> <img src="imgs/Testimonial/person/tmc (1).jpg" alt=""> </div> </div> <div class="testi-text"> <p>"Lorem ipsum"</p> <p class="person-name">UI/UX Designer <span>John David</span></p> </div> </div> <div class="testi-box"> <div class="testi-img"> <div class="person"> <img src="imgs/Testimonial/person/tmc (3).jpg" alt=""> </div> </div> <div class="testi-text"> <p>"Lorem ipsum"</p> <p class="person-name">UI/UX Designer <span>John David</span></p> </div> </div> <div class="testi-box"> <div class="testi-img"> <div class="person"> <img src="imgs/Testimonial/person/tmc (4).png" alt=""> </div> </div> <div class="testi-text"> <p>"Lorem ipsum"</p> <p class="person-name">UI/UX Designer <span>John David</span></p> </div> </div> </div> </div>

我可以建議一種不同的方法(這是一個不打算直接模仿您的代碼的示例):

 //store your data as an array of objects const data = [ {name: "Name1", url: "url1"}, {name: "Name2", url: "url2"}, {name: "Name3", url: "url3"}, {name: "Name4", url: "url4"}, {name: "Name5", url: "url5"} ] //create an index variable let index = 0; //store your elements let img = document.getElementById("image"); let name = document.getElementById("name"); //create a render function that updates your elements with current index const render = () => { img.setAttribute("src",data[index].url); name.textContent = data[index].name; } //make prev on click that lowers index down to 0 const prev = () => { if(index > 0){ index -= 1; render(index); } } //make next on click that raises index up to last const next = () => { if(index < data.length -1){ index += 1; render(); } }
 <!-- only render one set of data --> <img src="url1" id="image" /> <div id="name"> Name1 </div> <button onclick="prev()">prev</button> <button onclick="next()">next</button>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM