Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wywołanie metody obiektu przy onclick
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
my_identify
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
revyag
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.
my_identify
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
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.