JavaScript this hivatkozás mindig az aktuális div adatait adja vissza
Alapvetően eddig még nem használtam OO kódot. Egy probléma során vizsont rájöttem, hogy muszáj lesz objektumokhoz nyúlnom.
A probléma: egy HTML elem onClick eseményéhez egy olyan függvényt szerettem volna hozzárendelni, aminek 2 paramétere van. Arra rájöttem, hogy az addEvenetListener-rel nem fog összejönni. Ekkor kicsit gondolkodtam és szmbe jutott, hogy egy objektum tulajdonságaival tudom helyettesíteni a paraméter listát.
A kód a következőképpen néz ki:Az (1)-es pontnál szépen kiírja a kezdőértékeket amit megadtam. A (2)-es pontnál kiírja a felülírt értékeket. Viszont az eseménykezelő által beállított esemény bekövetkeztekor (tehát amikor rákattintok a DIV-re) nem a (2)-e pontnál beállíott értékeket írja ki, hanem annak a DIV-nek az értékeit amihez hozzá van rendelve az onClick esemény. Tehát kiírja az ID-hez, hogy getclient (ez a DIV ID-je), és mivel nincs cmd tulajdonsága ez undefined lesz.
Miért viselkedik így a kód?
Ha jól tévedek, akkor megoldást jelent a problémára, ha nem this.id-vel adom meg, hanem var id-vel és csinálok egy setID tagfüggvényt. De ha nem muszáj, akkor nem szeretnék ehhez a megoldáshoz folyamodni.
■ A probléma: egy HTML elem onClick eseményéhez egy olyan függvényt szerettem volna hozzárendelni, aminek 2 paramétere van. Arra rájöttem, hogy az addEvenetListener-rel nem fog összejönni. Ekkor kicsit gondolkodtam és szmbe jutott, hogy egy objektum tulajdonságaival tudom helyettesíteni a paraméter listát.
A kód a következőképpen néz ki:
function block()
{
this.id = 'ID alapérték';
this.cmd = 'CMD alapérték';
this.show = showBlock;
// (1)
// alert('ID : ' + this.id + '\nCommand : ' + this.cmd);
function showBlock()
{
alert('(show)ID : ' + this.id + '\n(show)Command : ' + this.cmd);
}
}
var obj = document.getElementById('getclients');
var getClients_block = new block();
getClients_block.id = 'ID #1';
getClients_block.cmd = 'CMD #1';
// (2)
// alert('ID : ' + getClients_block.id + '\nCommand : ' + getClients_block.cmd);
addEvent(obj, 'click', getClients_block.show);
Miért viselkedik így a kód?
Ha jól tévedek, akkor megoldást jelent a problémára, ha nem this.id-vel adom meg, hanem var id-vel és csinálok egy setID tagfüggvényt. De ha nem muszáj, akkor nem szeretnék ehhez a megoldáshoz folyamodni.
Megoldottam, de ...
a fenti jó kérdés
üdv t
Re
<off>
Hol találhtató (főként magyar, de angol is jöhet) jó JS OOP leírás teljesen az alapoktól?
</off>
re
Nearly all of the books about JavaScript are quite awful. They contain errors, poor examples, and promote bad practices. Important features of the language are often explained poorly, or left out entirely. I have reviewed dozens of JavaScript books, and I can only recommend one: JavaScript: The Definitive Guide (5th Edition) by David Flanagan. (Attention authors: If you have written a good one, please send me a review copy.)
http://javascript.crockford.com/javascript.html
ha számít a véleményem :) megerősítem : JavaScript: The Definitive Guide (5th Edition) egy js könyv mind felett ;)
üdv t
Az ára nem semmi ...
Ha már JS-nél tartunk, akkor erről az AJAX könyvről mi a véleményed? (Nekem ez a könyv van meg és belelapozva nem rossz - időm nem sok volt még vele foglalkozni, majd nyár elején)
Ha ez a var-os megoldás jelenti a closure-t
http://weblabor.hu/cikkek/oojsafelszinalatt / Belépés egy futási környezetbe / Ezt követően létrejön egy Variables nevű pszeudo objektum. ...
részét, de inkább az egész cikket, persze un. az ajánlott könyvben is benne van, némiképp érthetőbben, és alapokról indulva :)
üdv t
eval