Sziasztok!
Az lenne a kérdésem, hogy vajon a következő kódból miért nem megy rendesen az alert(myId); sor?
function MyObject(){
this.myId = 'my_id';
this.render = function(){
document.write('
valami
');
document.getElementById(this.myId).attachEvent("onmousedown", this.eventHandler);
}
this.eventHandler = function(event){
alert(this.myId);
}
}
var uff = new MyObject();
uff.render();
Azt gondolnám, hogyha futtatom, és a "valami" szövegre kattintok, akkor kiírja, hogy my_id, de ehelyett undefined-et kapok...
Tud valaki segíteni? Miért nem jó ez így?
előre is köszi,
Khayll
- 1029 megtekintés
Hozzászólások
weblabor.hu
- A hozzászóláshoz be kell jelentkezni
Azert, mert a dokumentum betoltodese utani document.write() felulirja a dokumentumot, elvesz minden benne, meg a definialt js fuggvenyek is.
Veletlenul nem tetted fel ezt a kerdest par napja a prog.hu-n is..?
Szerk: most latom, hogy bonyolultabb. Tedd fel a kerdest a prog.hu-n!
_________________________________________________________________________
"ONE OF THESE DAYS I'M GOING TO CUT YOU INTO LITTLE PIECES!!!$E$%#$#%^*^"
- A hozzászóláshoz be kell jelentkezni
Hello!
Én most kérdezem először, de biztos másnak is van hasonló problémája. Ok, akkor azt mondod ehelyett inkább a parent.appendchild-al hozzam létre a diveket? Ok, megpróbálom.
üdv,
Khayll
- A hozzászóláshoz be kell jelentkezni
Átírtam, de ettől nem lett jobb...
- A hozzászóláshoz be kell jelentkezni
Mert az eventHandlerben
a this
az a my_id
-vel ellátott elem lesz, nem a te objektumod.
--
HUP Firefox extension
- A hozzászóláshoz be kell jelentkezni
Ezt nem igazán értem, én azt szeretném, hogy az eventhandlerben a this arra az objektumra mutasson, aminek a id-je a my_id, de nem így történik...
üdv,
Khayll
- A hozzászóláshoz be kell jelentkezni
na jó, mégis értem, de akkor pontosan mire mutat ott az a this... merthogy nem is a div-re, mert sem az innerHTML, sem pl. az id nem olvasható ki, pedig ezek mind be vannak állítva a div-ben...
- A hozzászóláshoz be kell jelentkezni
1. a render metódusban: document.getElementById(this.myId).onmousedown = this.eventHandler;
2. az eventHandlerben: this.eventHandler = function(event){ alert(this.getAttribute('id')); }
Így megy IE és FF alatt is, és azt is írja ki, amit szeretnél.
(ez csak példa, mielőtt valaki megírná, hogy eventhandlert nem így írunk :-) )
- A hozzászóláshoz be kell jelentkezni