Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: js, klasy i dynamiczna zmienna wewnątrz klasy
Forum PHP.pl > Forum > Po stronie przeglądarki
eFK
Witam serdecznie,

Mam ogromny problem z obiektowym podejściem do js i próbując się go uczyć natknęłam się niestety na, chyba dość prosty problem, ale jednak nie mogę znaleźć nigdzie jak go rozwiązać. Próbuję zrobić galerię obrazów. W klasie definiuję pole imgIndex, które ma przechowywać index powiększonego obrazka, a następnie zmieniać swoją wartość, gdy użytkownik naciska na strzałki chcąc zobaczyć poprzednie/następne obrazki.

  1.  
  2. var GallFunc={
  3. img:<?php echo json_encode($GetImg->jsonData); ?>,
  4. imgIndex:imgIndex, //tu ma być informacja o indexie obrazka
  5.  
  6. showAllImg:function(){
  7. for(var i=0;i<this.img.length;i++){
  8. document.getElementById("gallCont").innerHTML += ("<img src='gallery/"+this.img[i]+"' class='smallimg'>");
  9. }
  10. },
  11.  
  12. showBigImg:function(){
  13. $('.smallimg').click(function(){
  14. document.getElementById("picture").innerHTML = "<img src="+this.getAttribute('src')+" id='bigimg'>";
  15. $('#picture').css('display','block');
  16.  
  17. this.imgIndex=$(this).index(); //nadaję indexowi pierwszą wartość, który obrazek został kliknięty i powiększony
  18. //var imgIndex=$(this).index();
  19. //console.log(imgIndex);
  20. })
  21. },
  22.  
  23. /*
  24. getImgIndex:function(){
  25. console.log(this.showBigImg().imgIndex,typeof(this.showBigImg().imgIndex)); //nieudana, chyba bezsensowna próba
  26. },*/
  27.  
  28. prev:function(){
  29. $('.prev').click(function(){
  30. prev -= this.imgIndex;
  31. this.imgIndex=prev; //a tutaj chcę zmienić wartość imgIndex, program wiedział jaki jest aktualny index obrazka i mógł je dalej podmieniać
  32. console.log(this.imgIndex,typeof(this.imgIndex));
  33. })
  34. }
  35. }
  36.  
  37. GallFunc.showAllImg();
  38. GallFunc.showBigImg();
  39. //GallFunc.getImgIndex();
  40. GallFunc.prev();


Niestety w GallFunc.prev() zmienna imgIndex jest niewidoczna, undefinate. Nie mogę znaleźć sposobu na wykorzystanie jej w GallFunc.prev() oraz zmienianie jej wartości wewnątrz klasy. Próbowałam się do niej dostać na kilka sposobów, ale nie mogę znaleźć w necie nic, co akurat odpowiadałoby mojemu przypadkowi. W PHP to samo jest bardzo prosto zrobić, ale jak to zrobić w js? Pomoże ktoś?
viking
Klasy w js https://developer.mozilla.org/pl/docs/Web/J...ference/Classes
Poza tym dlaczego tak mieszasz jquery z czystym js? Wewnatrz funkcjo click() this odnosi się do klikniętego elementu, a this sam kontekst zyskuje po zainicjowaniu instancji.
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.