Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przycisk do galerii
darksiders94
post
Post #1





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 23.06.2014

Ostrzeżenie: (0%)
-----


Ktoś mi powie dlaczego takie coś nie działa poprawnie?
Wciskam przycisk wstecz i działa tylko pierwszy element funkcji: czyli z indeksu 1 do 0. Reszta nie działa. Rzecz jasna chodzi o przycisk do galerii


function wstecz(){
if(indeks = 1){
indeks--;
}else if(indeks = 2){
indeks--;
}else if(indeks = 0){
indeks = 2;
}
}

window.onload = function(){


var buttonik = document.getElementById("przycisk_poprzedni");
przycisk_poprzedni.onclick = function(){
wstecz();
}

}
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A jak wygląda poprawny operator porównania?
Go to the top of the page
+Quote Post
darksiders94
post
Post #3





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 23.06.2014

Ostrzeżenie: (0%)
-----


kiedy zamiast = dam == to w ogóle nie działa

Mam wrazenie, że funkcje nie chcą mi wykonywać kilku rzeczy tylko wykonują jedną

Ten post edytował darksiders94 25.06.2014, 17:43:56
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


W jakim sensie kilku?
Ta funkcja przy jednym wywołaniu wykona maksymalnie jedną operację przypisania.
Go to the top of the page
+Quote Post
redeemer
post
Post #5





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

Ostrzeżenie: (0%)
-----


Cytat(darksiders94 @ 25.06.2014, 18:28:14 ) *
kiedy zamiast = dam == to w ogóle nie działa
No i prawidłowo. Włącz konsole w przeglądarce to zobaczysz błędy (zmienna indeks jest w ogóle zainicjowana gdzieś?). Dodatkowo zamiast tak ifować ("zapętlając" licznik) możesz użyć np.:

[JAVASCRIPT] pobierz, plaintext
  1. var count = 3; // 0,1,2
  2. var indeks = 1;
  3. indeks = (++indeks)%count; // nastepny w zakresie 0-2 z wykorzystaniem modulo
  4. indeks = (--indeks<0 ? count-1 : indeks); // poprzedni w zakresie 0-2 z wykorzystaniem instrukcji warunkowej
[JAVASCRIPT] pobierz, plaintext


Ten post edytował redeemer 25.06.2014, 17:53:14
Go to the top of the page
+Quote Post
darksiders94
post
Post #6





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 23.06.2014

Ostrzeżenie: (0%)
-----


no bo tam mam pierwszą rzecz a potem jeszcze w else if. Te if else w ogóle nie działają.Może podam cały kod to bedzie wam łatwiej byka znaleźć




var zdjecia = new Array("obraz-slider1","obraz-slider2","obraz-slider3");

const FOTY = "zdjecia/";
const SEC = 1000;
const ZMIANA = 5*SEC;

indeks = 0;

function uaktualnij(){
var img = document.getElementsByTagName("img");
for(var i=0; i<img.length; i++){
img[i].src = FOTY + zdjecia[indeks] + ".jpg";
}

indeks++;
if(indeks==zdjecia.length)
indeks=0;

}

function startInterval(){
interval = setInterval(function(){ uaktualnij(); }, ZMIANA);
}

function stopInterval(){
clearInterval(interval);
}

function wstecz(){
if(indeks=1)
indeks=0;
}


window.onload = function(){
uaktualnij();
startInterval();

var but = document.getElementById("przycisk_stop");
var start = "Rozpocznij prezentację";
var stop = "Wstrzymaj prezentację";
przycisk_stop.value = stop;
przycisk_stop.onclick = function(){
if(this.value == stop){
stopInterval();
this.value = start;
}else{
startInterval();
this.value = stop;
}
}

var buttonik = document.getElementById("przycisk_poprzedni");
przycisk_poprzedni.onclick = function(){
wstecz();
}

}


@Redeemer Nie za bardzo wiem co napisałeś (IMG:style_emoticons/default/biggrin.gif) dopiero zaczynam no i w związku z tym robię sobie galerię na dobry początek (IMG:style_emoticons/default/smile.gif)
Funkcje i ifowanie jest dla mnie bardziej przejrzyste (IMG:style_emoticons/default/biggrin.gif)

Ten post edytował darksiders94 25.06.2014, 18:24:29
Go to the top of the page
+Quote Post
trueblue
post
Post #7





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


  1. //nie wiem po co tu pętla skoro masz jedno zdjęcie
  2. function uaktualnij(){
  3. var img = document.getElementsByTagName("img");
  4. img[0].src = FOTY + zdjecia[indeks] + ".jpg";
  5. }
  6.  
  7. function wstecz(){
  8. indeks--;
  9. if(indeks<0)
  10. indeks=2;
  11. }


Ten post edytował trueblue 25.06.2014, 19:25:38
Go to the top of the page
+Quote Post
darksiders94
post
Post #8





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 23.06.2014

Ostrzeżenie: (0%)
-----


to co podałeś nie działa. Mam 3 zdjecia ale jedno miejsce na nie.
Go to the top of the page
+Quote Post
trueblue
post
Post #9





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Pokaż cały kod.
Go to the top of the page
+Quote Post
darksiders94
post
Post #10





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 23.06.2014

Ostrzeżenie: (0%)
-----


HTML

<!DOCTYPE html PUBLIC>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="skrypty.js"></script>
<link rel="stylesheet" href="css/style.css" />
</head>
<body>
<div id="container">
<!-- -----------------------------SEKCJA1---------------------------------- -->
<div id="sekcja1">
<div id="panel">
<div id="panel-telefon">
<b>KONTAKT: 500 450 846</b>
</div>
<div id="panel-email">
<b>E-mail: pawellos110@gmail.com</b>
</div>
</div>
<div id="baner">
<div id="fotos">
<img src=""/>
<input type="button" id="przycisk_stop" value="" />
<input type="button" id="przycisk_poprzedni" value="<<Prev" />
</div>
</div>
</div>
<!-- -----------------------------SEKCJA2---------------------------------- -->
<div id="sekcja2">
<div class="clear"></div>
<div id="menu">
<div id="klocek1-menu">
<div id="klocek1-text">
<b>Główna</b>
</div>
</div>
<div id="klocek2-menu">
<div id="klocek2-text">
<b>Szablony Allegro</b>
</div>
</div>
<div id="klocek3-menu">
<div id="klocek3-text">
<b>Strony internetowe</b>
</div>
</div>
<div id="klocek4-menu">
<div id="klocek4-text">
<b>Cennik<b>
</div>
</div>
<div id="klocek5-menu">
<div id="klocek5-text">
<b>O nas</b>
</div>
</div>
</div>
<div class="clear"></div>
<div id="nowe-standardy-css3">
<b>Nowe standardy CSS3 na Twojej stronie</b>
</div>
<div id="css3">
</div>
<div class="clear"></div>
<div id="html5">
</div>
<div id="nowe-standardy-html5">
<b>Najnowsze rozwiązania HTML5 w zasięgu ręki</b>
</div>
<div class="clear"></div>
</div>
<!-- -----------------------------SEKCJA3---------------------------------- -->
<div id="sekcja3">
<div id="stopka-autorska">
<div id="stopka-autorska-text">
<b>Szablon stworzony przez: pawellos110@gmail.com</b>
</div>
</div>
</div>
</div>
</body>
</html>





JS



var zdjecia = new Array("obraz-slider1","obraz-slider2","obraz-slider3");

const FOTY = "zdjecia/";
const SEC = 1000;
const ZMIANA = 5*SEC;

indeks = 0;

function uaktualnij(){
var img = document.getElementsByTagName("img");
for(var i=0; i<img.length; i++){
img[i].src = FOTY + zdjecia[indeks] + ".jpg";
}

indeks++;
if(indeks==zdjecia.length)
indeks=0;

}

function wstecz(){
indeks--;
if(indeks<0)
indeks=2;
}

function startInterval(){
interval = setInterval(function(){ uaktualnij(); }, ZMIANA);
}

function stopInterval(){
clearInterval(interval);
}

window.onload = function(){
uaktualnij();
startInterval();

var but = document.getElementById("przycisk_stop");
var start = "Rozpocznij prezentację";
var stop = "Wstrzymaj prezentację";
przycisk_stop.value = stop;
przycisk_stop.onclick = function(){
if(this.value == stop){
stopInterval();
this.value = start;
}else{
startInterval();
this.value = stop;
}
}

var buttonik = document.getElementById("przycisk_poprzedni");
przycisk_poprzedni.onclick = function(){
wstecz();
}

}
Go to the top of the page
+Quote Post
trueblue
post
Post #11





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Nie wiem dlaczego nadal pchasz pętlę:
  1. for(var i=0; i<img.length; i++){
  2. img[i].src = FOTY + zdjecia[indeks] + ".jpg";
  3. }

skoro masz jeden obrazek. Ale jeśli chcesz, to może zostać.

Skrypt działa poprawnie, tzn. brak błędów wykonania.
Przycisk "wstecz" tak oprogramowany również działa poprawnie - cofa indeks o 1, przez co kolejnym wyświetlanym slajdem jest "aktualny_indeks+1". Bardzo możliwe, że chciałeś inne działanie, ale jak na razie nie opisałeś.
Go to the top of the page
+Quote Post
darksiders94
post
Post #12





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 23.06.2014

Ostrzeżenie: (0%)
-----


hmm.. no ale mi to nie działa. Nie mam pojęcia dlaczego. Może to przez timer? Zdjęcia są wyświetlane po kolei i przycisk nie działa.
Go to the top of the page
+Quote Post
trueblue
post
Post #13





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A jak ma działać przycisk?
Obecnie kiedy jest wyświetlane zdjęcie numer 3, po kliknięciu dwukrotnym indeks jest cofany do wartości 0, i jako kolejny wyświetli się slajd numer 2.
Go to the top of the page
+Quote Post
darksiders94
post
Post #14





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 23.06.2014

Ostrzeżenie: (0%)
-----


Dlaczego po kliknięciu dwukrotnym?
Poza tym tak się właśnie nie dzieje. Pokaz leci sobie dalej i ten przycisk nic nie robi. Chcialbym żeby po kliknięciu przycisku natychmiat pojawiało się zdjecie wcześniejsze.

Dobra, działa. Tylko nie wiem dlaczego po dwukrotnym kliknięciu dopiero.
Nie wiem jak zrobić żeby od razu zdjęcia przeskakiwały. Dodaje do funkcji wstecz stopinterval a na koniec startinterval i nie reaguje tak jak powinno

No i jeszcze nie rozumiem Twojego zapisu w funkcji wstecz.
Jeśli dobrze rozumuję to zdjęcie 1 to indeks 0, zdjecie 2 to indeks 1, zdjęcie 3 to indeks 2.
Więc dlaczego w funkcji jest jeśli indeks < 0. Kiedy indeks jest mniejszy od 0?
Co najlepsze to działa.. chciałbym zrozumieć jak..
Go to the top of the page
+Quote Post
trueblue
post
Post #15





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Bo kliknąłem dwukrotnie.

Teraz dopiero opisałeś problem.

  1. var zdjecia = new Array("1","2","3");
  2.  
  3. const FOTY = "";
  4. const SEC = 1000;
  5. const ZMIANA = 5*SEC;
  6.  
  7. var indeks = 0;
  8. var interval;
  9.  
  10. function uaktualnij(){
  11. var img = document.getElementsByTagName("img");
  12. img[0].src = FOTY + zdjecia[indeks] + ".jpg";
  13. indeks++;
  14. if(indeks==zdjecia.length)
  15. indeks=0;
  16.  
  17. }
  18.  
  19. function wstecz(){
  20. stopInterval();
  21. indeks-=2; //cofamy się o dwa, bo aktualny indeks wskazuje na zdjęcie następne w kolejce, a nie aktualnie wyświetlane
  22. if(indeks<0)
  23. indeks=2;
  24.  
  25. uaktualnij();
  26. startInterval();
  27.  
  28. }
  29.  
  30. function startInterval(){
  31. interval = setInterval(function(){ uaktualnij(); }, ZMIANA);
  32. }
  33.  
  34. function stopInterval(){
  35. clearInterval(interval);
  36. interval=null;
  37. }
  38.  
  39. window.onload = function(){
  40. startInterval();
  41.  
  42. var but = document.getElementById("przycisk_stop");
  43. var start = "Rozpocznij prezentację";
  44. var stop = "Wstrzymaj prezentację";
  45. przycisk_stop.value = stop;
  46. przycisk_stop.onclick = function(){
  47. if(this.value == stop){
  48. stopInterval();
  49. this.value = start;
  50. }else{
  51. startInterval();
  52. this.value = stop;
  53. }
  54. }
  55.  
  56. var buttonik = document.getElementById("przycisk_poprzedni");
  57. przycisk_poprzedni.onclick = function(){
  58. wstecz();
  59. }
  60.  
  61. }
Go to the top of the page
+Quote Post
darksiders94
post
Post #16





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 23.06.2014

Ostrzeżenie: (0%)
-----


Wszystko śmiga jak należy oprócz tego, że funkcja wstecz przestaje działać prawidłowo kiedy jest wyświetlane zdjęcie 3. Wtedy zamiast cofnąć do zdjęcia numer 2, wyświetla zdjęcie następne czyli pierwsze. Z kolei kiedy z pierwszego przejdę do ostatniego to z ostatniego nie chce przełączyć do drugiego.

Tak czy siak jest lepiej (IMG:style_emoticons/default/biggrin.gif) ba! nawet rozumiem wszystko co napisałeś (IMG:style_emoticons/default/smile.gif) dziękuję za pomoc

Nawet wiem dlaczego się tak dzieje (IMG:style_emoticons/default/biggrin.gif) nie wiedziałem wcześniej jaki wskazuje indeks. Dopiero Ty mi powiedziałeś, że wskazuje następny. To zupełnie inna sprawa teraz (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
trueblue
post
Post #17





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


  1. var zdjecia = new Array("1","2","3");
  2.  
  3. const FOTY = "";
  4. const SEC = 1000;
  5. const ZMIANA = 5*SEC;
  6.  
  7. var indeks = -1;
  8. var interval;
  9. var direction=1;
  10.  
  11. function uaktualnij(){
  12.  
  13. indeks+=direction;
  14.  
  15. if(indeks==zdjecia.length)
  16. indeks=0;
  17. if(indeks<0)
  18. indeks=zdjecia.length-1;
  19. var img = document.getElementsByTagName("img");
  20. img[0].src = FOTY + zdjecia[indeks] + ".jpg";
  21. }
  22.  
  23. function wstecz(){
  24. stopInterval();
  25. direction=-1;
  26. uaktualnij();
  27. direction=1;
  28. startInterval();
  29. }
  30.  
  31. function startInterval(){
  32. interval = setInterval(function(){ uaktualnij(); }, ZMIANA);
  33. }
  34.  
  35. function stopInterval(){
  36. clearInterval(interval);
  37. interval=null;
  38. }
  39.  
  40. window.onload = function(){
  41. startInterval();
  42.  
  43. var but = document.getElementById("przycisk_stop");
  44. var start = "Rozpocznij prezentację";
  45. var stop = "Wstrzymaj prezentację";
  46. przycisk_stop.value = stop;
  47. przycisk_stop.onclick = function(){
  48. if(this.value == stop){
  49. stopInterval();
  50. this.value = start;
  51. }else{
  52. startInterval();
  53. this.value = stop;
  54. }
  55. }
  56.  
  57. var buttonik = document.getElementById("przycisk_poprzedni");
  58. przycisk_poprzedni.onclick = function(){
  59. wstecz();
  60. }
  61.  
  62. }
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 16:40