我要在某种滑块中实现的目标,当转到下一个img并到达循环时,它的最后一个元素从0重新开始,当转到上一个img时,没有元素在最后一个元素之前开始,所以上。
现在它可以工作了,但是单击几次后崩溃,我必须刷新页面。
有人可以帮忙吗?
我知道这段代码中确实存在严重错误,但是我听不懂闭包。
这是代码
const btn_prev = document.getElementById("btn_prev");
const btn_next = document.getElementById("btn_next");
let toPrev;
let toNext;
const slider = () => {
const arrImg = Array.from(document.querySelectorAll(".sli_cont img"));
const arrImgLength = arrImg.length;
let curr;
let prev;
let next;
for (let i = 0; i < arrImgLength; i++) {
if (arrImg[i].classList.contains("current")) {
curr = arrImg[i];
if (i === 0) {
prev = arrImg[arrImgLength - 1];
next = arrImg[i + 1];
} else if (i == arrImgLength - 1) {
next = arrImg[0];
prev = arrImg[i - 1];
} else {
prev = arrImg[i - 1];
next = arrImg[i + 1];
}
prev.classList.add("prev");
next.classList.add("next");
}
}
btn_prev.addEventListener("click", function() {
prev.classList.remove("prev");
next.classList.remove("next");
curr.classList.remove("current");
prev.classList.add("current");
slider();
});
btn_next.addEventListener("click", function() {
prev.classList.remove("prev");
next.classList.remove("next");
curr.classList.remove("current");
next.classList.add("current");
slider();
});
};
slider();
body {
overflow: hidden;
}
.sli_cont {
width: 100vw;
position: relative;
}
img {
width: 50vw;
height: auto;
position: absolute;
left: -200vw;
}
.prev {
left: -25vw;
}
.current {
left: 25vw;
z-index: 1;
}
.next {
left: 75vw;
}
.btn {
font-size: 30px;
color: red;
position: absolute;
display: inline;
padding: 1rem;
background-color: #fff;
cursor: pointer;
}
#btn_prev {
top: 100px;
left: 0;
}
#btn_next {
top: 100px;
right: 0;
}
<div class="sli_cont">
<img src="https://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/242ce817-97a3-48fe-9acd-b1bf97930b01/09-posterization-opt.jpg">
<img src="https://s.hswstatic.com/gif/giant-panda-bear-pictures3.jpg">
<img class="current" src="https://cloud.lovindublin.com/images/_relatedEntryImage2x/cosmic-castle.png?mtime=20160907180855">
<img src="https://ichef.bbci.co.uk/news/976/cpsprodpb/D81C/production/_100542355_46333730-bad3-4c72-af16-3c4aba9c1164.jpg">
<img src="https://i0.wp.com/pulptastic.com/wp-content/uploads/2014/12/cute-reptiles-107__700.jpg">
<div class="btn" id="btn_prev">-</div>
<div class="btn" id="btn_next">+</div>
</div>