![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 27.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Czesc
Mam taki problem ze nie wiem jak zrobic żeby funkcja Test poprawnie widziała zmienną thisUser.imie? Czym to moze być spowodowane ze jej nie widzi (wypisuje undefined) ? wiem ze po przeniesieniu jej wywolonia do funkcji anonimowej w request jest ok ale chce miec wywolanie Test w funkcji init po pobraniu informacji o userze. Czy mam ktos pomysł? nie chce tez zmieniać thisUser.imie na zmienną globalną imie chce zeby byla ona częścia obiektu User. Ponizej załączam kod: CODE function User(id){
var thisUser = this; this.UID = id; this.imie = ""; this.nazw = ""; this.login = ""; this.phone = ""; this.email = ""; this.init = function(){ thisUser.getUserInfo(); // thisUser.Test(); } this.getUserInfo = function(){ var url = host + 'getUserInfo/'+thisUser.UID; var wynik; new Ajax.Request(url,{ method:'post', onSuccess: function(e) { wynik = eval('(' + e.responseText + ')'); thisUser.imie = wynik[0].imie; thisUser.nazw = wynik[0].nazw; thisUser.phone = wynik[0].phone; thisUser.email = wynik[0].mail; thisUser.login = wynik[0].login; } }); } this.Test = function(){ alert("LOGIN:"+thisUser.imie); } ... ... ..... } |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Nie widzi, gdyż zmienną deklarujesz z frazą var, co nadaje jej lokalną "moc".
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 27.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie widzi, gdyż zmienną deklarujesz z frazą var, co nadaje jej lokalną "moc". Tzn. jak mam to zapisać w kodzie zeby nie byla? Ale tutaj to wogole z tego co mam to jest ona i tak nadrzędna do podfunkcji w podanej funkcji która jest moją klasą usera więc powinna być zasięgowania do tych funkcji ale nie jest... |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
Tzn. jak mam to zapisać w kodzie zeby nie byla? Ale tutaj to wogole z tego co mam to jest ona i tak nadrzędna do podfunkcji w podanej funkcji która jest moją klasą usera więc powinna być zasięgowania do tych funkcji ale nie jest... tak... nadrzędna?? - nie dałeś całego kodu a liczysz na odpowiedź ![]() ps. po kiego czorta Ci zmienne prywatne jak widzę, że zajebiście trzymasz się tutaj hermetyzacji ^^ - jeśli wykonujesz coś przez eval to do tego musisz mieć dostęp ze zmiennych globalnych window ^^ ![]() ogólnie jak pomyslisz to ten link Ci pomoze niżej ![]() ![]() [jQuery] Snake, Wężyk z prostą grafą. ps. w tej "podrzędnej" funkcji jeśli nie dasz var przed thisUser to ta zmienna wyląduje w globalnym obiekcie window i wszędzie do niej będziesz miał zasięg ![]() Ten post edytował zegarek84 16.02.2010, 23:14:17 -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 27.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Tak wczesniej w innej klasie robię obiekty User:
CODE t.Podlaczeni[t.PodlaczeniCnt] = activeUsers[i].id_user; t.Users[t.PodlaczeniCnt] = new User(activeUsers[i].id_user,t.PodlaczeniCnt); t.Users[t.PodlaczeniCnt].init(); t.PodlaczeniCnt++; ponizej załączam obecną wersje USER: CODE function User(id,row){ this.UID = id; this.TableRow= row; this.imie = ""; this.nazw = ""; this.login = ""; this.phone = ""; this.email = ""; var thisUser = this; this.init = function(){ thisUser.getUserInfo(); thisUser.DrawRow(); } this.getUserInfo = function(){ var url = host + 'getUserInfo/'+thisUser.UID; new Ajax.Request(url, { method:'post', onSuccess: function(x) { var wynik = eval('(' + x.responseText + ')'); thisUser.imie = wynik[0].imie; thisUser.nazw = wynik[0].nazw; thisUser.phone = wynik[0].phone; thisUser.email = wynik[0].mail; thisUser.login = wynik[0].login; } }); } this.DrawRow = function(){ if(!document.getElementById('row_'+thisUser.TableRow)){ try{ var wiersz = document.getElementById('obiekty').insertRow(thisUser.TableRow+1); //pierwszy row to header tabelki wiersz.setAttribute('id','row_'+thisUser.TableRow); var td1 = wiersz.insertCell(0); // td1.setAttribute('onMouseover',"Tip('Kliknij aby śledzić w nowym oknie tego użytkownika<br/><b>Dane użytkownika:<b><br/> <i> "+thisUser.imie+" "+thisUser.nazw+"</i> <br/> email: "+thisUser.email+" <br/> Numer tel.: "+thisUser.phone+" <br/> Kolor użytkownika: <span style=\"background:"+thisUser.marker.color+";\">"+thisUser.marker.color+"</span>');" ); // td1.setAttribute('onmouseout',"UnTip();"); td1.innerHTML = thisUser.login; td1.style.width = "20%"; var td2 = wiersz.insertCell(1); td2.setAttribute('onMouseover',"Tip('Pokaż pozycje <br/>użytkownika na mapie');" ); td2.setAttribute('onmouseout',"UnTip();"); td2.innerHTML = '<a href="#"><img src="'+host+'/img/lornetka.gif" OnClick="c('+thisUser.UID+');" /></a>'; td2.style.width="13%"; var td3 = wiersz.insertCell(2); td3.setAttribute('id','td4_'+thisUser.TableRow); td3.style.width="10%"; td3.innerHTML = '<button onclick="lock('+thisUser.TableRow+');">blokuj</button>'; var td4 = wiersz.insertCell(3); td4.setAttribute('onMouseover',"Tip('Zaznacz aby dodać wybranego użytkownika <br/> do listy śledzonych obiektów');" ); td4.setAttribute('onmouseout',"UnTip();"); td4.setAttribute('class',"right"); td4.innerHTML = '<input id="track_'+thisUser.TableRow+'" type="checkbox" onchange="track('+thisUser.TableRow+')"/>'; td4.style.width="5%"; } catch(e){ } } } this.Test = function(){ alert("LOGIN: "+thisUser.login); } this.Info = function(){ alert(thisUser.imie+", "+ thisUser.nazw+", "+ thisUser.phone+", "+ thisUser.email+", "+ thisUser.login+" ." ); } } Ogolnie wczesniej dokladnie zarysowałem to o co mi chodziło nie widziałem sensu dawania tutaj całej klasy, chodzi o to ze DrawRow nie widzi tych zmiennych pisze undefined a thisUser nie moge zrobic globalną bo jak napisałes nie chce jej nadpisać gdyż obiektów user bedzie setki wiec każdy musi miec "swoj" globalny w jego ramach "this". |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 19:02 |