[JS] Zmienna zwraca undefined |
[JS] Zmienna zwraca undefined |
20.04.2013, 21:45:29
Post
#1
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%) |
|
|
|
20.04.2013, 21:57:02
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) |
Funkcja IS = GetUAnswers(); wykona się 1s po tym jak wywołujesz alerta. Dlatego zmienna w chwili wyświetlania = undefined
-------------------- |
|
|
20.04.2013, 22:01:44
Post
#3
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%) |
Jak temu zapobiec?
|
|
|
20.04.2013, 22:03:04
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) |
Wywoływać albo getUAnserws na początku skryptu od razu albo opóźnić też wyświetlenie alert.
|
|
|
20.04.2013, 22:07:58
Post
#5
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%) |
|
|
|
20.04.2013, 22:18:41
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) |
Opóźniłeś o 100ms - funkcja się wykona po 1000ms. Poza tym robisz to źle. Opisz problem dokładniej - co chcesz uzyskać?
-------------------- |
|
|
20.04.2013, 22:25:32
Post
#7
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%) |
Opóźniłeś o 100ms - funkcja się wykona po 1000ms. Poza tym robisz to źle. Opisz problem dokładniej - co chcesz uzyskać? Wiem, mam spore braki w Javascript. Co 1000ms ładują mi się zdarzenia na stronie (tzn. ładują się wpisy). Chcę wyświetlić ile ich jest. Gdy dam na początku $("#ratio").size(); to otrzymam pierwsze 25 zdarzeń, a później gdy minie kolejne 1000ms to tych zdarzeń ma być 50. Wobec tego muszę robić setInterval aby na bieżąco otrzymywać ilość zdarzeń. Gdy nie użyję setInterval to wywołując funkcję, która ma mi zwrócić ilość zdarzeń - otrzymam 25 zamiast 50. |
|
|
20.04.2013, 22:34:05
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) |
No to wstaw tego alerta co miałeś w pierwszym poście do setIntervala.
Kod var IS; setInterval(function(){ IS = GetUAnswers(); alert(IS); }, 1000); Uwaga: Wstawianie alerta w setInterval to głupi pomysł i może Ci utrudnić korzystanie z przeglądarki. To jedynie przykład. Docelowo wstaw tam innerHTML. Jak chcesz przetestować działanie na alertach to radzę zwiększyć czas na około 5s( tylko do testów ) -------------------- |
|
|
20.04.2013, 22:38:17
Post
#9
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%) |
Nie mogę użyj innerHTML w tym, ponieważ co 1000ms będzie mi się tworzyć tekst.
|
|
|
20.04.2013, 22:47:54
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) |
kamil4you, a nie może on skorzystać z konsoli zamiast alert?
console.log(IS); |
|
|
20.04.2013, 22:52:28
Post
#11
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%) |
|
|
|
21.04.2013, 08:30:27
Post
#12
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) |
http://plugins.jquery.com/postpone/
Ten post edytował pyro 21.04.2013, 08:39:40 -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
21.04.2013, 09:04:13
Post
#13
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%) |
Wy chyba nie wiecie o co mi chodzi
Jak użyć zmiennej IS poza tym setInterval abym dostawał liczbę zamiast undefined?
Ten post edytował Dominator 21.04.2013, 09:05:05 |
|
|
21.04.2013, 09:06:40
Post
#14
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) |
@Dominator, dostałeś odpowiedź dlaczego tak się dzieje, że jest undefined, a ja Ci podałem przykład jak to rozwiązać. Więć właściwie... czego Ty jeszcze chcesz?
-------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
21.04.2013, 09:26:38
Post
#15
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%) |
Zrobiłem tak, jak napisałeś i znowu dostaję undefined...
Ten post edytował Dominator 21.04.2013, 09:27:09 |
|
|
21.04.2013, 09:30:45
Post
#16
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) |
Pokaż kod - jak będzie sensowny to pooprawię
-------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
21.04.2013, 09:37:52
Post
#17
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) |
Dzieje się tak dlatego, że kolejne "komendy" JS wykonywane są niemal równocześnie. Trzeba użyć jakiegoś callback-a. pyro podał Ci link do gotowej biblioteki w jQuery. Prościej można to pokazać w taki sposób:
Na żywo - odpal konsolę i sprawdź. Jednak postpone z pewnością ma zaimplementowane wszystkie niezbędne funkcjonalności, dlatego warto z tego skorzystać. |
|
|
21.04.2013, 11:04:25
Post
#18
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Najlepiej zainteresować się tym tematem http://api.jquery.com/category/deferred-object/
-------------------- |
|
|
21.04.2013, 14:43:11
Post
#19
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%) |
Powoli, powoli udaje mi się zrobić to, co chcę, ale mam pewien problem:
Sprawa wygląda tak, że co 1000ms otrzymuję liczbę, a ona zamiast się aktualizować to ciągle dodaje się do diva. Co zrobić aby ona się nie dodawała, tylko aktualizowała? Chcę aby to wyglądało tak: "Pytań: 25" - > "Pytań: 50", a nie "Pytań: 2550" (tak jest obecnie). Wszystkim oczywiście kliknąłem "pomógł", bo na swój sposób mi pomogliście Ten post edytował Dominator 21.04.2013, 14:43:48 |
|
|
21.04.2013, 14:55:10
Post
#20
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) |
Dzieje się tak, bo masz tam += czyli do tekstu, który już istnieje on dodaje kolejny.
|
|
|
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 12:02 |