przychodzę do Was z moim problemem. Otóż mam jako zadanie domowe napisać (bez użycia gotowych rozwiązań, Lightboxów, JQuery i bibliotek JS z Internetu) Slider, Slideshow zdjęć okazów motyli do mojej strony internetowej. Jest w sieci sporo rozwiązań ale żadno nie do końca odpowiada temu, co jest wymagane i zwykle ma jakiś plugin lub działa dzięki pomocy w.w. dodatków.
Sama coś napisałam, jednak jeszcze nie do końca działa to jak powinno.
Otóż ten Slider:
- powinien prezentować zdjęcia okazów z odpowiadającym podpisem
- powinien przy odswieżeniu lub pierwszym wejściu powinien wyświetlić się przypadkowo wylosowany okaz (tego jeszcze nie mam – tu zapewne trzeba pracować z Math.random)
- powinien zawierać przycisk do sterowania – dalej i wstecz
- powinien mieć wyłączony przycisk dalej przy zdjęciu ostatnim oraz wyłączony przycisk wstecz przy pierwszym (prawie działa, chociaż w moim Sliderze tak jakby nie było końca i po ostatnim zdjęciu pokazuje się pierwsze a powinno się zatrzymać)
- powinien „lecieć” dalej ze slajdami, jeśli użytkownik nie użyje żadnego z dwóch przycisków przez 3 sekundy (takie automatyczne przewracanie slajdów). Jeśli zaś użyje przycisku – logicznie automatyczne przełączanie powinno być zdeaktywowane.
Da się zrobić coś takiego przy pomocy tylko JS i HTML , bez żadnych dodatków?
Mój kod prezentuje się tak:
HTML
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> </head> <body onload="sliderAuto()"> <section class="containerSlider"> <div id="okazy"> <div id="nameExponat"> </div> <form action="#" id="buttonNavi"> </form> </div> </section> </body> </html>
i JS
var licznik; var wszyZdj; licznik = 1; wszyZdj = 4; var captionText = new Array( "Podpis1", "Podpis2", "Podpis3", "Podpis4" ) window.setInterval(fuonction sliderAuto( x ){ var image = document.getElementById('slide'); licznik = licznik + 1; if(licznik > 4){ licznik = 1;} if(licznik < 1){ licznik = 4;} image.src="media/slideshow/expo-"+ licznik +".jpg"; document.getElementById("okazPodpis").innerHTML = captionText[licznik]; },3000); function slider( x ){ var image = document.getElementById('slide'); licznik = licznik + x; if(licznik > 4){ licznik = 1;} if(licznik < 1){ licznik = 4;} image.src="media/slideshow/expo-"+ licznik +".jpg" buttons(); } function buttons() { document.getElementById('dalej').disabled = licznik >= wszyZdj; document.getElementById("wstecz").disabled = licznik <= wszyZdj; }
Nie wiem czy jest prawidłowy w samym pomyśle, ale jeśli trzeba zacząć na nowo zupełnie inaczej to zrobię tak

Będę bardzo wdzięczna za odpowiedzi, rozwiązania i porady

Pozdrawiam
Karamelek