Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [javascript] Zasięgi zmiennych
Forum PHP.pl > Forum > Przedszkole
sunneku
Witam

Mam problem. Piszę mianowicie skrypt javascript.
Mam w nim między innymi

  1. var wordsSearch = new Array();
  2.  
  3. var api = ( {
  4. getWords : function() {
  5. WebApi.managerCallback(this.WebApiUrl,'getWords','');}
  6. });
  7.  
  8. var WebApi = ( {
  9.  
  10. managerCallback : function(_host,_method,_param) {
  11. var script = document.createElement('script');
  12. script.type = 'text/javascript';
  13. script.src = _host + '?callback=WebApi.' + _method + _param;
  14. $('body').append(script);
  15. },
  16.  
  17. getWords : function(_data) {
  18. if (_data.error != 0) {
  19. console.log("error!");
  20. return;
  21. }
  22.  
  23. for (key in _data.result) {
  24. console.log(key +'=='+_data.result[key]);
  25. wordsSearch[key] = _data.result[key];
  26. }
  27.  
  28. }
  29. });


Alert i firebug potwierdza że otrzymuje dane poprawne i że są one wpisywane do wordsSearch[key]

W dalszej części skryptu mam coś takiego:
  1. $(document).ready(function() {
  2. api.getWords(); //firebug dobrze odnotowuje pobrane słowa
  3. alert(wordsSearch[0]); //undefined
  4. })


Ale sam alert jest undefined. Jak tutaj skorygować sprawę?
Wg mnie wordsSearch jest zmienną globalną, inicjujemy jako pustą tablicę. W wyniku wywołania api.getWords wywołuję WebApi.getWords i modyfikuję w tej funkcji zmienną wordsSearch. Ale modyfikuję to jakby w sposób lokalny a nie w sposób globalny.

Proszę o pomoc. Za wszelką pomoc z góry dziekuję.
nospor
alert(wordsSearch[0]);
wykonuje ci się zanim jeszcze wykona sie getWords()
sunneku
Kurczę. Sądziłem że idzie o zasięgi zmiennych. Dziękuję bardzo. Faktycznie, nie pomyślałem. Zupełnie nie w tym co trzeba kierunku patrzyłem

Póki co użyłem:
setTimeout("alert(wordsSearch[0])",1250);

Pytanie czy jest jakaś funkcja w stylu "wywołaj funkcję po skończeniu funkcji"? (chodzi o to że nie chce dawać delay czy timeout)
peter13135
no to robisz jedną funkcję za drugą.
funkcja1(); funkcja2()
i wykonują się kolejno
nospor
@peter13135 przeczytaj wątek jeszcze raz

@sunneku Twoim callbackiem jest właśnie getWords()
sunneku
Ok, widać że już nie myślę. Już wszystko jasnę. Dzięki bardzo
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-2025 Invision Power Services, Inc.