Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wywołanie metody obiektu przy onclick
my_identify
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 5.02.2006

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


Witam. Napisałem coś takiego:

  1. <div id="content"></div>
  2.  
  3. <script type="text/javascript">
  4.  
  5. function box(name)
  6. {
  7. this.name = name;
  8. this.init = box_init;
  9. this.swap=box_swap;
  10.  
  11. this.init();
  12. }
  13.  
  14. function box_init()
  15. {
  16. e = document.createElement('div');
  17. e.innerHTML="click me";
  18. e.onclick=this.swap;
  19. document.getElementById('content').appendChild(e);
  20. }
  21.  
  22. function box_swap()
  23. {
  24. alert(this.name);
  25. }
  26.  
  27. box01 = new box('01');
  28. box02 = new box('02');


Kliknięcie w wygenerowany div - "click me" powoduje wywołanie metody "swap", problem w tym że zamiast "name" alert wyswietła mi wartość "undefinited". Tak jakby metoda nie miała dostępu do zmiennych obiektu. Problem pewnie tkwi w wywłoaniu onclick, ale ja nie mam pojecia jak to popwawić. Z góry dziękuję za odpowiedź.

Edit:

Wykombinowałem coś takiego

zmiast:
Kod
e.onclick=this.swap;


napisałem:
Kod
obj= this;
e.onclick= function() { obj.swap() };


Prawie działa, ale tylko kiedy jest jeden obiekt. Dodanie drugiego powoduje wyswieltenie jego wartosci niezależnie na który klikne blink.gif

Ten post edytował my_identify 15.07.2006, 15:24:29
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
revyag
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

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


Powiedz mi jaki jest sens tego rozwiązania ? Co chcesz osiągnąć ?
Co do problemu, to chodzi o to że oprócz obiektu "obiektu" tworzysz jeszcze obiekt DOM. Jeśli dodasz box_swap w zdarzeniu onclick obiektu DOM który utworzyłeś, to this nie będzie wskazyać już na główny obiekt, tylko na obiekt DOM(div).
Jak dodasz sobie np. atrybut id, do diva i w box_swap wywołasz alert(this.id) to wyświetli Ci id tego diva.


--------------------
-------------

------
Go to the top of the page
+Quote Post
my_identify
post
Post #3





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 5.02.2006

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


Długo by trzeba tłumaczyć, a tak właściwie to ja sam do końca nie wiem co chce osiągnąć winksmiley.jpg . Ale znalazłem rozwiązanie tego problemu. Moje drugie rozwiazanie było dobre tyle, że zapomniałem dodać var przed obj. I już wszystko działa guitar.gif
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 04:47