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.
<script> var GallFunc={ img:<?php echo json_encode($GetImg->jsonData); ?>, imgIndex:imgIndex, //tu ma być informacja o indexie obrazka showAllImg:function(){ for(var i=0;i<this.img.length;i++){ document.getElementById("gallCont").innerHTML += ("<img src='gallery/"+this.img[i]+"' class='smallimg'>"); } }, showBigImg:function(){ $('.smallimg').click(function(){ document.getElementById("picture").innerHTML = "<img src="+this.getAttribute('src')+" id='bigimg'>"; $('#picture').css('display','block'); this.imgIndex=$(this).index(); //nadaję indexowi pierwszą wartość, który obrazek został kliknięty i powiększony //var imgIndex=$(this).index(); //console.log(imgIndex); }) }, /* getImgIndex:function(){ console.log(this.showBigImg().imgIndex,typeof(this.showBigImg().imgIndex)); //nieudana, chyba bezsensowna próba },*/ prev:function(){ $('.prev').click(function(){ prev -= this.imgIndex; this.imgIndex=prev; //a tutaj chcę zmienić wartość imgIndex, program wiedział jaki jest aktualny index obrazka i mógł je dalej podmieniać console.log(this.imgIndex,typeof(this.imgIndex)); }) } } GallFunc.showAllImg(); GallFunc.showBigImg(); //GallFunc.getImgIndex(); GallFunc.prev(); </script>
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ś?