Мне нужно сделать HTML-страницу со слайд-шоу. Фотографии из слайд-шоу должны меняться каждые 2 секунды. Через 0,5 секунды после отображения текущего изображения текст должен отображаться над изображением. И это должно быть сделано без использования jQuery или других библиотек, просто функций javascript. Это то, что я имею прямо сейчас, но оно не работает должным образом.Слайд-шоу Javascript, который меняет текст через 0,5 секунды после изменения изображения
var imageIndex = 0;
var textIndex = 0;
displayImage();
displayText();
function displayImage() {
var i;
var x = document.getElementsByClassName("mySlides");
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
imageIndex++;
if (imageIndex > x.length) {imageIndex = 1}
x[imageIndex-1].style.display = "block";
setTimeout(displayImage, 2000); // Change image every 2 seconds
}
function displayText() {
var i;
var x = document.getElementsByClassName("text");
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
textIndex++;
if (textIndex > x.length) {textIndex = 1}
x[textIndex-1].style.display = "block";
setTimeout(displayText, 2500);
}
<div class="container">
<div class="mySlides">
<img src="Images/slide1.jpg">
<div class="text">Yunnan, China</div>
</div>
<div class="mySlides">
<img src="Images/slide2.jpg">
<div class="text">Namib Desert, Africa</div>
</div>
<div class="mySlides">
<img src="Images/slide3.jpg">
<div class="text">Rapeseed fields in Luoping, China</div>
</div>
<div class="mySlides">
<img src="Images/slide4.jpg">
<div class="text">Colorado, USA</div>
</div>
</div>
Определите, что «не работает должным образом». Вы получили сообщение об ошибке? Если да, то в чем его очередь? Помогите нам помочь вам. Кроме того, разместите соответствующий HTML-код, чтобы мы могли запускать код, как он есть. –
Ваша проблема заключается в неправильных действиях. 2000-2500, 4000-5000, 6000-7500 ..... Глядя на время, которое вы видите после каждой итерации, времена продолжают расти ... Либо вам нужно отложить текст на 500, прежде чем устанавливать итерацию на 2000 или вам просто нужно вызвать таймаут после изменения изображения. – epascarello