Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zamiana obrazka na kolejny w pętli
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
byker
Witam wszystkich forumowiczów!
Chciałbym na stronie stworzyć galerię obrazków: widoczna jest jest pierwsza grafika, po kliknięciu w jej miejsce pojawia się następna.
Stworzyłem taki kod:

  1. java script:
  2. for(n=1; n<5; +n)
  3. {
  4. $('#r'+n).click(function(){
  5. $(this).fadeOut('slow');
  6. });
  7. n=1++;
  8. $('#r'+n).show();
  9. };
  10.  
  11. html:
  12. <div id="obrazki">
  13. <div id="r1">
  14. </div>
  15. <div id="r2">
  16. </div>
  17. <div id="r3">
  18. </div>
  19. <div id="r4">
  20. </div>
  21. <div id="r5">
  22. </div>
  23. </div>
  24.  
  25. css:
  26. #r1{position: absolute;}
  27. #r2,#r3,r4,#r5{
  28. position: absolute;
  29. display: none}


Wszystko działa tylko jak dojdę do ostatniego obrazka, chcialbym aby pojawił się pierwszy (r1). Czy mógłbym prosić o pomoc jak to zrobić? Dodawałem do pętli while(n==6){n=1}, ale nie działa.
Pozdrawiam wszystkich.
lukasz_os
Po 1 while nie służy do sprawdzenia warunku.
Po 2 nie potrzebny for w JS.
Po 3 nie nadawaj divom z obrazkami oddzielnych id. ID nie do tego służy - poczytaj głębiej o css.
Po 4 skoro już używasz JQuery to zainteresuj się funkcjami jak children, eq, next, prev, first.
fizzlebubble
Proszę: http://jsbin.com/ewihep/1/edit

Ogólnie na divach się tego nie robi, tylko na ul > li smile.gif.
byker
ok, dzięki za naprowadzenie. Spróbuję coś wymyślić.
lukasz_os
Tak mi się wczoraj nudziło tu masz wersję bez zbędnych ID czy głupich pętli w jsie. Do tego nie jest w żaden sposób uzależniony od ilości obrazków w danym divie.

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  5. <title>Test</title>
  6. <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
  7.  
  8. $().ready(function(){
  9. $('#obrazki').children().first().show();
  10. var number = $('#obrazki').children().length;
  11. $('#obrazki>img').click(function(){
  12. var index=$(this).index()+1;
  13. $(this).hide();
  14. if(index==number){
  15. $('#obrazki').children().first().show();
  16. } else {
  17. $(this).next().show();
  18. }
  19. });
  20. });
  21.  
  22. </script>
  23. #obrazki img {
  24. display: none;
  25. position: absolute;
  26. }
  27.  
  28. </style>
  29. </head>
  30. <body>
  31. <div id="obrazki">
  32. <img src="1.jpg" />
  33. <img src="2.jpg" />
  34. <img src="3.jpg" />
  35. <img src="4.jpg" />
  36. <img src="5.jpg" />
  37. </div>
  38. </body>
  39. </html>
byker
Bardzo Ci kolego dziękuję. Rozwiązanie podane na tacy.
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.