Kezdőoldal » Számítástechnika » Weblapkészítés » Elképzelhető hogy eseménykezel...

Elképzelhető hogy eseménykezelővel nem lehet tömbben tárolt javascript objektumreferenciára hivatkozni, vagy csak én vagyok béna?

Figyelt kérdés

Például


script


var tomb = new Array();

tomb['ertek'] = new objektum('ertek');


html


onclick="javascript:tomb[this.name].fuggveny(this.name)"


már nem emlékszem hogy milyen hibaüzenetet írt ki, de ha azt mondjátok hogy ilyet lehet, akkor megkeresem hogy mi volt a hiba... :D

(bár már elég sok mindent kipróbáltam)



2014. márc. 5. 11:16
1 2
 11/15 anonim ***** válasza:

Az sosem gond, azért van ez az oldal. :)


A "privát" adatokat belsőbb scope -ból ugyanúgy lokális változóként éred el (ha csak felül nem deklaráltad), a "globális" adattagokat, illetve metódusokat pedig a "this" kulcsszóval. Csakhogy az, hogy a "this" mire mutat, az függvényenként és kontextenként más, ezért kell workaroundként létrehozni a "self" -et.


Röviden, tömören:


A "this" egy adott objektumra mutat, ha

- Konstruktorként lett meghívva

- Egy már létező objektum "public" metódusa (és nem lett átbindolva)


A "this" a window objektumra mutat, ha

- A függvény nem konstruktorként hívódott

- ÉS a függvény egy "private" metódus vagy nincs explicit gazdaobjektuma

2014. márc. 13. 10:11
Hasznos számodra ez a válasz?
 12/15 A kérdező kommentje:

basszus, úgy tűnik hogy a self-es megoldással működik... :o


egyébként a probléma az volt, hogy van egy ajaxos meghívásom,


pl mint ez:


[link]


aminek az aszinkronitás (vagy szinkronitás :) miatt nem tudok beállítani visszatérési értéket, és mivel egy ajaxos függvényt akarok használni konkrétan mindenhez, ezért azt találtam ki hogy


if (xmlhttp.readyState==4 && xmlhttp.status==200){}


-en belül egy paraméterrel átadott eljárást hívok meg. Ez a korábbi tapasztalatok alapján csak objektumként ment nekem. Na de nekem több form-om van egy oldalon, és valahogy meg kell egymástól különböztetnem őket, és úgy szerettem volna hogy a formok mint objektumok magukban tárolják a tábla feltöltéshez szükséges függvényeket, a függvényeken belül meg paraméterként meg volt adva hogy


this.következöeljaras


ami működött, de a következő eljáráson belül kellett volna megint a this.újabbeljaras, de azt már nem bírta, csak akkor, ha közvetlenül hívom meg mondjuk formok["valami"].újabbeljaras. Na de most kipróbáltam self-el, és úgy bizony működik... :)


Köszönöm a segítséget!

2014. márc. 17. 07:45
 13/15 A kérdező kommentje:
Ja igen, mivelhogy már tudok self-el önmagára hivatkozni, így nem kell asszociatív tömböt használnom, nyugodtan tudok használni változót. :)
2014. márc. 17. 07:54
 14/15 anonim ***** válasza:
Szívesen; ha újabb kérdésed akadna, pingelj meg bátran :)
2014. márc. 17. 10:04
Hasznos számodra ez a válasz?
 15/15 A kérdező kommentje:
Ok! :)
2014. márc. 17. 10:09
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!