#javascript #html #image-gallery
#javascript #HTML #изображение-галерея
Вопрос:
я пытаюсь создать простую фотогалерею javascript, в которой вы можете изменить изображение с помощью 2 кнопок, на предыдущую и на следующую, есть 9 изображений, и если отображается 9-е изображение, и вы нажимаете далее, оно должно показать первое изображение, кто-нибудь может мне помочь, пожалуйста? Мой код не работает.
HTML:
<body>
<img src="img (1).jpg" alt="" height="200">
<button id="previous">previous image</button>
<button id="next">next image</button>
JS:
<script>
let counter = 1;
let img = document.querySelector("img");
let changeImg = function (type) {
if (type == 1) {
counter
} else {
counter--
}
if (counter <= 0) {
counter = 9
}
img.setAttribute("src", "img (" counter ").jpeg")
}
let previous = document.getElementById("previous")
let next = document.getElementById("next")
previous.addEventListener("click", chaneImg(1))
next.addEventListener("click", changeImg(2))
Спасибо
Ответ №1:
Ваша проблема в том, как вы добавили своих слушателей:
previous.addEventListener("click", changeImg(1))
должно быть
previous.addEventListener("click", (e) => changeImg(1))
Первый вызывает changeImage при загрузке.
let counter = 1;
let img = document.querySelector("img");
let changeImg = function(type) {
if (type == 1) {
counter
} else {
counter--
}
if (counter <= 0) {
counter = 9
}
img.setAttribute("src", "img (" counter ").jpeg")
}
let previous = document.getElementById("previous")
let next = document.getElementById("next")
previous.addEventListener("click", (_e) => changeImg(1))
next.addEventListener("click", (_e) => changeImg(2))
<body>
<img src="https://i.imgur.com/Att5gPe.jpg" alt="" height="200">
<button id="previous">previous image</button>
<button id="next">next image</button>
</body>
Комментарии:
1. Я попробовал это, и теперь он загружает первое изображение img (1).jpg, а также src работает после того, как я нажимаю на предыдущее / следующее отлично, но по какой-то причине изображения все еще не отображаются, даже 1-е, когда я нажимаю на следующее, а затем предыдущее возвращается к 1-му
2. Я использовал jpeg из кода, но это должно было быть только jpg, большое вам спасибо, теперь все работает нормально 🙂
Ответ №2:
Не проверено, но я вижу пару вещей:
опечатка в этой строке:
previous.addEventListener("click", changeImg(1))
chaneImg(1)
Для changeImg(1)
У вас также нет условия для проверки обратного этому:
if (counter <= 0) {
counter = 9
}
итак, попробуйте добавить
if (counter >= 9) {
counter = 1
}