Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Zmienna nie aktualizuje swojej wartości po pewnym zdarzeniu
Forum PHP.pl > Forum > Przedszkole
cve
Witam, piszę sobie malutki skrypt prezentujący galerie i napotkałem dziwny problem, otóż chcę aby po kliknięciu przycisku #next zmienna i przyjmowała +1, a w momencie kliknięcia przycisku #prev -1, niby funkcje działają dobrze, bo fotografie przechodzą po kolei podczas kliknięcia #next, ale nie reagują warunki, w którym jest ustawione, ze gdy jest wyświetlona ostatnia fotka, to przycisk #next ma się schować, a gdy wyświetlona jest pierwsza fotka to przycisk #prev ma się schować, jest dobrze, gdy na samym początku przypiszę zmiennej i np. wartość 2, 3, 4, 5 itd, wtedy te warunki działają dobrze, bo znika #prev przy pierwszym zdjęciu, i #next przy ostatnim, ale dlaczego ta zmienna nie aktualizuje się podczas klikania w elementy?
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4. <title>Jquery Loader</title>
  5. <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
  6. <script type="text/javascript" src="js/js.js"></script>
  7. </head>
  8. <body>
  9. <div id="galeria">
  10. <img alt="" src="img/IMG_4533.JPG" />
  11. <img alt="" src="img/IMG_4540.JPG" />
  12. <img alt="" src="img/IMG_4551.JPG" />
  13. <img alt="" src="img/IMG_4553.JPG" />
  14. <img alt="" src="img/IMG_4832.JPG" />
  15. <img alt="" src="img/IMG_4838.JPG" />
  16. <img alt="" src="img/IMG_4973.JPG" />
  17. <img alt="" src="img/IMG_4997.JPG" />
  18. <img alt="" src="img/IMG_5010.JPG" />
  19. </div>
  20. <a href="#" id="prev">Prev</a>
  21. <a href="#" id="next">Next</a>
  22. </body>
  23. </html>

  1. $(function(){
  2. $("#galeria").hide();
  3.  
  4. collection = $("#galeria img").map(function() {
  5. return $(this).attr("src");
  6. }).get();
  7.  
  8. i=0;
  9. j=collection.length;
  10.  
  11. $('body').append("<img id='img' alt='' src='"+collection[i]+"' />");
  12.  
  13. if(i<=0) {
  14. $('#prev').hide();
  15. $('#next').show();
  16. }
  17. if(i>=j-1) {
  18. $('#next').hide();
  19. $('#prev').show();
  20. }
  21. $('#next').click(function(){
  22. i = i + 1;
  23. $('#img').attr('src', collection[i]);
  24. })
  25. $('#prev').click(function(){
  26. $('#img').remove();
  27. i = i - 1;
  28. $('#img').attr('src', collection[i]);
  29. })
  30. });

Byłbym wdzięczny za jakąś wskazówkę. Z góry serdecznie dziękuję.
Pozdrawiam.
posiadacz
W listenerze obsługującym zdarzenie zmiany zdjęcia (następne lub poprzednie) nie masz obsługi pokazywania/ukrywania przycisków, dlatego działa tylko przy pierwszym wywołaniu.

Dopisz funkcje:
  1. function showNext(){
  2. ...
  3. }
  4.  
  5. function hideNext(){
  6. ...
  7. }
  8. function showPrev(){
  9. ...
  10. }
  11. function hidePrev(){
  12. ...
  13. }
  14. function manageButton(currentPic, maxPic){
  15. if(currPic == 0){
  16. hidePrev();
  17. }else{
  18. showPrev();
  19. }
  20.  
  21. if(currPic => maxPic){
  22. hideNext();
  23. }else{
  24. showNext();
  25. }
  26. }


i w sekcji

  1. $('#next').click(function(){
  2. i = i + 1;
  3. manageButtons(i, j);
  4. $('#img').attr('src', collection[i]);
  5.  
  6. })
  7.  
  8. $('#prev').click(function(){
  9. manageButons(i, j);
  10. $('#img').remove();
  11.  
  12. i = i - 1;
  13.  
  14. $('#img').attr('src', collection[i]);
  15.  
  16. })

I pokombinuj bo można to jeszcze ladniej zrobic, tak po prostu dziala.
cve
Działa smile.gif dziękuję bardzo.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.