![]() |
something wrong - Wersja do druku +- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl) +-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www) +--- Dział: xHTML, CSS, JavaScript (https://www.webmastertalk.pl/forum-xhtml-css-javascript) +--- Wątek: something wrong (/thread-something-wrong) |
something wrong - wsp - 01-10-2012 Nie wiem czemu nie działa mi pewna funkcja, lub inaczej. W ogóle nie jest wywoływana. Może to być wina tego, że wywołuje click na rzecz diva? Kod PHP: $("div.but").click(function () { czy można stosować w ten sposób this? dodam, że w samej funkcji też mam kilka razy użyte this. edit: jeszcze dodam o co mi chodzi. Chcę zmienić klasę danego diva po kliknięciu w niego i tylko w niego, mimo, że inne divy również mają tę klasę. Wydaje mi się więc że powinienem użyć this, ale pewnie błędnie myślę. edit2: Napotkałem jeszcze jeden problem. Wstrzymuje funkcję funkcją setTimeout. Jest to funkcja cykliczna, wykonywana co jakiś czas. Niestety funkcja inna wyzwalana zdarzeniem click operuje na tych samych danych. Jak zablokować funkcję drugą do momentu aż poprzednia wykona się do końca? RE: something wrong - camelrafal - 01-10-2012 this można tak stosować ja robie tak że daje alert(this); aby dowiedzieć się czy mam jakiś obiekt przypisany do this czy mam undefined może też zdarzyć się że zgubisz gdzieś thisa np w ajaxie i będziesz musiał go przekazać w zmiennej var ten=this; aby ustawić classe możesz skorzystać z addClass lub removeClass lub toggleClass aby kliknąć w danego diva i niewywołać akcji z diva pod nim zobacz stopPropagation (nie wiem czy ci to potrzebne) a co do drugiego pytania to może zrób jakąś zmienną która będzie globalna i która będzie informowała o tym czy zakończono dany cykl nie wiem dokładnie o co ci chodzi ,musiałbyś bardziej sie rozpisać aby dostać lepszą odpowiedź RE: something wrong - wsp - 01-10-2012 dzięki za odpowiedź. Tylko jak poczekać na to aż zmienna globalna się zmieni? RE: something wrong - camelrafal - 01-10-2012 chcesz wywołać funkcje kliknięciem i poczekać aż pętla się zakończy?? hmmm może użyj drugiej zmiennej ![]() niech po kliknięciu ustawi jakąś zmienną np var kliknieto=true; i po zakończeniu pętli niech sprawdza czy kliknięto==true i wykona wtedy jakąś operację albo niech kliknięto przechowuje this var ktory_guzik_kliknieto=this; dalej nie wiem o co chodzi RE: something wrong - wsp - 01-10-2012 Rozumiem, że zmieni ją jedna z funkcji. Druga w tym czasie powinna poczekać na to aż ta zmienna się zmieni. Ładowanie pętli nieskończonej to chyba skandaliczne rozwiązanie względem optymalizacji. RE: something wrong - camelrafal - 01-10-2012 opisz do cholery dokłądnie o co chodzi a nie takie granie w ciuciubabke RE: something wrong - wsp - 01-10-2012 Dwie funkcje, obie operują na tych samych zasobach. Jedna jest cykliczna np co 5 s. Trwa około 1s. Druga związana z eventem. Funkcja pierwsza ma w swojej treści czekanie setTimeout. Jeśli kliknę w trakcie czekania niestety nie uzyskam żądanego efektu ponieważ na jednym zasobie pracują dwie funkcje. Rozwiązaniem byłoby synchronizacja między nimi w ten sposób, że druga funkcja czeka na zakończenie pierwszej i wtedy się wykonuje, natomiast kolejne wywołanie funkcji pierwszej nastąpi dopiero po wykonaniu funkcji drugiej. RE: something wrong - camelrafal - 02-10-2012 Kod: var guzik_oczekujacy; z tym że jeżeli klikniesz pare guzików to wykona sie tylko ten ostatni ale nie wiem czy tak ma być czy wszystkie mają się wykonać jeżeli wszystkie to możesz stworzyć tablice zamiast jednej zmiennej do której będziesz dokładał kolejne guziki które kliknięto i potem w funkcji drugiej zrobić pętlę w której po kolei odczytujesz z tablicy guziki i wykonujesz dla nich jakies zadanie tylko jezeli robisz np gre to powyzszy kod jest bez sensu bo czas reakcji moze byc zbyt dlugi i kijowo sie bedzie gralo jezeli to nie do gry a doczegos innego to tez nie wiem do czego wiec nie ciezko powiedziec czy to rozwiazanie jest poprawne czy lepiej zrobic to w inny sposob pomyslu ci nikt nie ukradnie jezeli o to sie martwisz jak wiekszosc amatorow |