Bonjour,


lorsque je fais ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function maFonction(){
 x = '';
 str= 'un test';
 
 this.buildX = function(){
 x = document.createElement('div');
 x.appendChild(document.createTextNode('texte'));
 x.onclick = this.test;
 }
 
 this.test = function()
 {
 alert(this.str);
 }
}
 
toto = new maFonction();
 
toto.buildX();
 
document.body.appendChild(toto.x);
ça ne fonctionne pas et je ne vois pas comment y parer

a part en mettant ma fonction "test" hors de l'objet maFonction, en lui passant en parametre ce dont j'ai besoin dans l'objet courant.

sinon, j'ai quand même essayé de mettre :

this.x.onclick = maFonction.test.apply(this);


Au cas ou je ne serais pas clair, je reformule :


Mon probléme est la portée de this lorsqu'on l'utilise avec DOM,
lorsque je met element.onclik = this devient l'element DOM et non l'objet courant.


quelqu'un aurait une astuce pour m'éviter les bidouilles ?
( eviter les bidouilles = eviter de délocaliser ma fonction )