![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 21.08.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
W jaki sposób umożliwić skryptom wielokrotne jednoczesne korzystanie z danej funkcji?
Tradycyjne definiowanie funkcji na zasadzie function cos_tam (id) powoduje, że gdy funkcja nie zostanie zakończona i inny element będzie się do niej odwoływał, pierwsze wywołanie zostanie niejako anulowane. Być może nadpisywane są zmienne funkcji, a może coś innego. |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
ajax daje taką możliwość -> poczytaj o synchronicznym i asynchronicznym działaniu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 21.08.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem co znaczy synchroniczne i asynchroniczne działanie, ale nie bardzo potrafię skojarzyć to z moim problemem...
|
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Opisz dokładniej problem.
Pokaż kod. Podaj przykład działania. |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
odwołujesz się do funkcji przez ajax , tak aby się dane nie nakładały (funkcje będziesz dawał w osobnym pliku)
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 21.08.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Sugerujesz, że wywołanie funkcji ma się odbyć przez zapytanie ajaxowe do serwera?
|
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Przyjaciele php.pl Postów: 2 258 Pomógł: 16 Dołączył: 21.09.2004 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
@innowwwacje
Zrób obiekt. Kod function obj() {
var obj = new Object(); obj.zmienna = ''; obj.jakasFunkcja = function() { alert(obj.zmienna); } return obj; } var a = new obj(); var b = new obj(); a.zmienna = 'Zmienna a'; b.zmienna = 'Zmienna b'; a.jakasFunkcja(); b.jakasFunkcja(); |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 21.08.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się, że wywoływanie za każdym razem funkcji z serwera to będzie sieczka dla wydajności.
Już opisuję szerzej problem. Ostatni mój temat dotyczył problemu poprawnego interpretowania zdarzenia onmouseout. Gdy div miał wewnątrz diva z tabelą z ikonami poruszanie kursorem w obrębie diva wywoływało nieproszenie funkcję onmouseout. Napisałem sobie funkcje, która ma sprawdzać położenie kursora względem diva. Jeżeli kursor znajduje się w obrębie diva z ikonami ma go nie chować. Mamy tabelę z listą dodanych kategorii. Po prawej stronie od każdego rekordu do tej pory była lista ikon funkcyjnych (dodaj, usuń, przesuń w górę itp.). W momencie kiedy tych ikon zaczęło przybywać, ergonomia obniżała się. Wpadłem na pomysł, by stworzyć jedną ikonę, która po umieszczeniu na niej kursora myszy pokazywałaby po lewej stronie od niej ikony funkcyjne dotyczące danej kategorii. Tutaj wszystko działa poprawnie. Mam taką funkcję:
Zdarzenie onmouseout wywoływane jest czasem na ostatnim pikselu poza elementem podczas zdejmowania kursora z diva. W związku z tym jest timeout, który sprawdza, czy faktycznie kursor jest poza divem. W ten sposób ikonki znikają tylko wtedy, gdy kursor fizycznie znajduje się poza ich obszarem. W momencie kiedy operuję na jednej ikonie tzn. umieszczam na niej kursor po czym go zdejmuję wszystko działa poprawnie. Całość wyświetlana jest w liście (kategoria pod kategorią itd.). Tak więc ikony są w kolumnie pod sobą. Kiedy przejadę kursorem wzdłuż ikon z pierwszej szybko na drugą, a potem na trzecią i potem dopiero zdejmę kursor myszy z ikony trzeciej, funkcja znikania ikon wywoływana jest tylko dla tej ostatniej. Wygląda to tak jakby funkcja mogła być używana jednocześnie w jednym czasie tylko raz. Kiedy przed jej zakończeniem wywoływana jest drugi raz, pierwsze wywołanie zostaje anulowane. @revyag No niby tak tylko rzecz polega na tym, że te obiekty miałyby być tworzone z automatu dla nieograniczonej ilości elementów generowanych dynamicznie, a nie dla jednego konrketnego... Ten post edytował innowwwacje 17.03.2009, 12:36:37 |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Nie wiem czy do konca dobrze zrozumialem.
Ale może zrób coś takiego, że w momencie najechania na ikone zapisujesz sobie czas najechania na nia. Nastepnie jezeli chcesz ukryc ikone to sprawdzasz czy inne nieukryte moga zostac schowane (sprawdzasz roznice czasow) i je wtedy ukrywasz. Jak to zrobic? Dla kazdej ikony tworzysz obiekt ja obsługujacy. A w oddzielnej tablicy przechowujesz liste obiektow dla kazdej ikony. Przy ukryciu przelatujesz liste obiektow i sprawdzasz czy mozna ukryc. To jest takie moje zalozenie i tylko propozycja. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 21:45 |