Skrypt 13: Prosta karuzela/slider obrazków
Trudny / egzaminacyjnyTeoria
Przełącza kolejne obrazki (np. plakaty filmów, zdjęcia produktu) przyciskami "Poprzedni"/"Następny", zapętlając się od ostatniego z powrotem do pierwszego i odwrotnie.
Kod (JavaScript)
<div class="karuzela">
<img id="obrazekKaruzeli" src="plakat1.jpg">
<button id="poprzedni">Poprzedni</button>
<button id="nastepny">Następny</button>
</div>
<script>
const obrazki = ["plakat1.jpg", "plakat2.jpg", "plakat3.jpg"];
let aktualnyIndeks = ;
const obrazekKaruzeli = document.getElementById("obrazekKaruzeli");
document.getElementById("nastepny").addEventListener("click", function () {
aktualnyIndeks = (aktualnyIndeks + 1) % obrazki.length; // "zawija się" po ostatnim
obrazekKaruzeli.src = obrazki[aktualnyIndeks];
});
document.getElementById("poprzedni").addEventListener("click", function () {
aktualnyIndeks = (aktualnyIndeks - 1 + obrazki.length) % obrazki.length;
obrazekKaruzeli.src = obrazki[aktualnyIndeks];
});
</script>
Komentarz i wyjaśnienie kodu
Operator % (reszta z dzielenia) to sposób na "zawinięcie" indeksu w tablicy — (aktualnyIndeks + 1) % obrazki.length po osiągnięciu ostatniego elementu automatycznie wraca do indeksu 0. Przy cofaniu dodajemy + obrazki.length PRZED obliczeniem reszty, żeby uniknąć ujemnego indeksu (JavaScript inaczej liczy resztę z liczb ujemnych, niż można by się intuicyjnie spodziewać).
Typowe błędy
Częsty błąd to brak zabezpieczenia "zawijania" indeksu przy cofaniu (samo aktualnyIndeks - 1 bez dodania długości tablicy) — przy pierwszym obrazku dałoby to indeks -1, czyli błąd "undefined" zamiast oczekiwanego ostatniego obrazka.