Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JS] Klasa i getElementById, getElementById wywolany w klasie zwraca undefined
comanderv
post
Post #1





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 2.12.2008

Ostrzeżenie: (0%)
-----


witam,
piszę sobie małą klasę w której potrzebuje odwołać się do istniejącego elementu HTML, metoda getElementById nie skutkuje...
wygląda to mniej więcej tak:
  1. function klasa()
  2. {
  3. this.x=parseInt(Math.random()*300);
  4. this.y=parseInt(Math.random()*100);
  5.  
  6. //pare innych pierdół
  7.  
  8. var dzieci = document.getElementById('div2').children;
  9. this.d = dzieci.length;
  10. }
  11.  
  12. //wywolanie alert(this.d) drukuje mi 'undefined'


w pisaniu obiektowym a już tym bardziej w JSie jestem dość raczkujący, prosiłbym o pomoc (IMG:style_emoticons/default/smile.gif)

Ten post edytował comanderv 22.02.2011, 11:37:59
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Dziwna tendencja:
wrzuacają coś do klasy i już myślą że to wina klasy :/

getElementById nigdzie ci nie zadziala bo nie ma czegos takiego jak getElementById
Jest:
document.getElementById
Go to the top of the page
+Quote Post
comanderv
post
Post #3





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 2.12.2008

Ostrzeżenie: (0%)
-----


przepraszam literówka...
oczywiście stosuje document.getElementById ...
nawet jesli za this.d przypisze document.location wciąż mam undefined
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A wywołujesz to w ogóle po umieszczeniu tych elementów w DOM? (czyt: wyzwalasz funkcję w odpowiednim miejscu?)
Go to the top of the page
+Quote Post
comanderv
post
Post #5





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 2.12.2008

Ostrzeżenie: (0%)
-----


caly kod JS zapisany jest zaraz przed zamkniecie elementu body,
do tego wywolanie mam w $(window).load zeby sie zdarzylo wszystko przed wywolanie zaladowac...
klasa nie widzi wgl ze jest w jakims documencie... ale zeby smieszniej bylo:
  1. function klasa()
  2. {
  3. this.x=parseInt(Math.random()*300);
  4. this.y=parseInt(Math.random()*100);
  5.  
  6. var woda = document.getElementById('woda');
  7. var ryby = woda.getElementsByTagName("img");
  8. var imgTag = document.createElement("img");
  9. imgTag.src='ryba.png';
  10. imgTag.setAttribute("position","top","left");
  11. imgTag.style.position='absolute';
  12. imgTag.style.top=this.y+'px';
  13. imgTag.style.left=this.x+'px';
  14. imgTag.className ="ryba";
  15.  
  16. this.p = ryby[0];
  17. // this.p = document.location; tez undefined
  18.  
  19. woda.appendChild(imgTag);
  20. }

nowego img tworzy, wewnatrz zlapanego przez getElementById diva, dalej juz lezy..
gdzie jest jakis blad?

Ten post edytował comanderv 22.02.2011, 11:43:14
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Wrzuć to online.
Go to the top of the page
+Quote Post
comanderv
post
Post #7





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 2.12.2008

Ostrzeżenie: (0%)
-----


Proszę: http://rytroman.za.pl/maping/fish/fish.html

co chce wgl zrobic: zliczyc ilosc dzieci w divie woda, zeby id nadac o jeden wiekszy kazdemu nowemu elementowi (nie umiem licznika w klasie zrobic (IMG:style_emoticons/default/tongue.gif) )

Ten post edytował comanderv 22.02.2011, 11:47:30
Go to the top of the page
+Quote Post
wookieb
post
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Jak w funkcji ryba robisz odwołanie do this.p i tworzysz obiekt tej funkcji za pomocą
Kod
new ryba();

To this w funkcji odnosi się do tworzonego obiektu a nie obiektu window.
Sprawdź
[JAVASCRIPT] pobierz, plaintext
  1. alert(mam.x+'--'+mam.y+' '+mam.p);
  2.  
[JAVASCRIPT] pobierz, plaintext


Licznik:
[JAVASCRIPT] pobierz, plaintext
  1. function funkcja() {
  2. this.constructor.prototype.licznik++;
  3. }
  4. funkcja.prototype.licznik = 0;
  5. new funkcja();
  6. new funkcja();
  7. console.log(funkcja.prototype.licznik);
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post
comanderv
post
Post #9





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 2.12.2008

Ostrzeżenie: (0%)
-----


o Boże... moja spostrzegawczość... no tak (IMG:style_emoticons/default/sleep.gif)
pisałem że jestem raczkujący ale nie aż tak (IMG:style_emoticons/default/sleep.gif)
to teraz sam siebie zadziwiłem...

Dzięki za poświęcony czas na moją głupotę heh ...ale wstyd (IMG:style_emoticons/default/haha.gif)

edit: licznik swietny, eliminuje moje wylawianie childrensów (IMG:style_emoticons/default/smile.gif) dziekuje (IMG:style_emoticons/default/smile.gif)

Ten post edytował comanderv 22.02.2011, 12:04:01
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 17:35