Я делаю слайд-шоу, которое использует данные JSON для заполнения их содержимого. Когда я подхожу к последнему слайду, мне нужно щелкнуть 2-3 раза, прежде чем слайд-шоу снова запустится на первом слайде. Я хочу убедиться, что этого не произойдет, и достаточно одного клика, чтобы снова начать первый слайд. Подобная ошибка возникает, когда я впервые загружаю страницу и нажимаю кнопку «Назад» в первый раз, когда мне нужно щелкнуть дважды, после этого она работает как надо. Я уверен, что в одном из моих утверждений if есть проблема, но я не могу понять, в чем дело.
index.html
<div class="slideshow-container">
<div class="mySlides fade">
<img id="image" style="width:100%" >
<div id="description"></div>
</div>
<a id="prev">❮</a>
<a id="next">❯</a>
</div>
<script>
window.onload = startup;
var xmlhttp;
function startup () {
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = statechange;
xmlhttp.open("GET", "slideshow.json", true);
xmlhttp.send();
}
function statechange() {
if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
var printout = " ";
var doc = JSON.parse(xmlhttp.responseText);
var amountOfElements = doc.length;
var current = 0;
var imagePath = "assets/stop2/";
document.getElementById("image").src = imagePath + doc[current].image;
document.getElementById("description").innerHTML = doc[current].text;
console.log(current);
prev.onclick = function() {
if(current !== 0){
current = current - 1;
document.getElementById("image").src = imagePath + doc[current].image;
document.getElementById("description").innerHTML = doc[current].text;
if(current === 0) {
current = amountOfElements;
}
}
else {
current = amountOfElements;
}
console.log(current);
};
next.onclick = function() {
if(current < amountOfElements) {
current = current + 1;
document.getElementById("image").src = imagePath + doc[current].image;
document.getElementById("description").innerHTML = doc[current].text;
}
else {
current = -1;
}
console.log(current);
};
}
else if (xmlhttp.readyState === 4 && xmlhttp.status === 404) {
alert("Something went wrong");
}
}
</script>
slideshow.json
{
"name": "First image",
"text": "blablabla",
"image": "img1.png",
"audio": "audio1.mp3"
},
{
"name": "Second image",
"text": "Lorem ipsum..",
"image": "img2.png",
"audio": "audio2.mp3"
},
{
"name": "Third image",
"text": "blablabla",
"image": "img3.png",
"audio": "audio3.mp3"
},
{
"name": "Last image",
"text": "blablablaaaaaa",
"image": "img4.png",
"audio": "audio4.mp3"
}
] ```