Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: setInterval, clarInterval
Forum PHP.pl > Forum > Po stronie przeglądarki
eFK
Witam serdecznie,

bardzo potrzebuję porady.

Robię coś na kształt e-kantora. W skrypcie mam stworzone kilka wierszy tabeli z id#unit, po kliknięciu na które pobierana jest z odpowiedniego z nich informacja o ilości jednostek danej waluty ile chce kupić klient, a następnie jest to mnożone z ceną za jednostkę i zwracane do klienta jako informacja ile musi zapłacić. Divy są edytowalne, tak że klient może bez problemu wybierać ile jednostek chce kupić. Chcę aby to wszytko odbywało się dynamicznie, bez przeładowywania strony. Niestety setInterval oczywiście mi wariuje, podczas pierwszego kliku jest ok, podczas drugiego wyświetla na zmianę automatycznie oby dwie wartości.

  1. var $buyCurrency = function(){
  2.  
  3. $("td#unit").click(function(){
  4.  
  5. //teoretycznie po kliku najpierw powinien się czyścić interval, co; jak mi się wydaje; powinno zapobiec takiej sytuacji jak moja. Jednak niestety tak nei jest i niezbyt wiem dlaczego.
  6. thisInterval=null;
  7. clearInterval(thisInterval);
  8. thisInterval=setInterval(function(){$displayData()},100);
  9. console.log(thisInterval);
  10.  
  11. var $check=$(this).attr('class');
  12. function $displayData(){ //to co jest w funkcji $displayData na się wykonywać dynamicznie
  13. if($("table#currency td#unit").hasClass($check)&&$("table#currency td#price").hasClass($check)){
  14. var $toBuy=Number($("table#currency td#unit."+$check).text())*Number($("table#currency td#price."+$check).text());
  15. $("td#toBuy").text($toBuy+" "+$check);
  16. }
  17.  
  18. }
  19. ;});
  20. }();

Funkcja jest co prawda w innej funkcji wykonującej się w pętli, ale to nie powinno mieć żadnego znaczenia.
Próbowałam najpierw ustawiać setInterval, a potem dopiero go czyścić, ale to nic nie dało, albo funkcji, która w zależności czy zmienna thisInterval na wartości null, czy nie ustawiał ją odpowiednio ustawić.
Wiem, że brakuje mi po prostu trochę wiedzy, dlatego bardzo proszę o pomoc
trueblue
Po co do tego używać setInterval? Funkcja, jak rozumiem, ma się wywołać raz, po click.
eFK
estety nie do końca. Click jest używany do identyfikacji pól z odpowiednimi danymi - jeżeli to div#unit.usd, funkcja ma znaleźć pole #prise.usc, i pobrane z nich wartości pomnożyć przez siebie i wyświetlić klientowi jako wynik. Tylko, ze pole #unit jest edytowalne, klient decyduje ile jednostek danej waluty chce kupić. I właśnie te zmiany chcę zrobić dynamicznie, bez przeładowywania strony. Klient wpisuje 10, to mu się od razu mnoży i wyświetla 10*cena danej waluty, ale nie, woli jednak 20 jednostek, to mu się to dynamicznie podmienia... O coś takiego mi chodzi :-)
viking
Czyli identyczne jak w tym temacie http://forum.php.pl/index.php?showtopic=25...p;#entry1211209
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-2024 Invision Power Services, Inc.