Dans le constructeur, l'EventListener 'keypress' est branché sur le
premier élément.
Dans la fonction de cet EventListener, je voudrais accéder au second
élément, mais le "this" de cette fonction est une référence au premier
élément qui ne permet pas d'accéder au second.
J'ai donc ajouter dans le constructeur:
this.search.obj = this;
Ainsi l'élément search contient une référence à l'objet dont il fait
partie, et je peux y accéder dans la fonction keypressfunct avec :
alert(this.obj.liste)
ça marche, mais je me demande si ça ne pose pas de problème ?
(en fait, ça me parait bizarre cette idée d'un contenu qui contient son
contenant).
Existe t-il une autre solution, ou celle-ci est-elle adaptée ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Y.D.
Le 27/11/2010 09:21, thierry a écrit :
Soit un objet COMPLETION qui contient deux elements html [...] Dans le constructeur, l'EventListener 'keypress' est branché sur le premier élément.
Dans la fonction de cet EventListener, je voudrais accéder au second élément, mais le "this" de cette fonction est une référence au premier élément qui ne permet pas d'accéder au second.
J'ai donc ajouter dans le constructeur: this.search.obj = this;
Ainsi l'élément search contient une *référence* à l'objet dont il fait partie [...]
(en fait, ça me parait bizarre cette idée d'un contenu qui contient son contenant).
Ici, rien ne contient rien. Tu l'as écrit, tu as simplement ajouté /une référence/ comme propriété à l'élément HTML search vers l'objet javascript qui contient une référence vers lui. Le risque inhérent a cette construction est la circularité this.search.obj.search.obj.search.obj... Note que tu as la même chose avec tous les objets HTML (puisqu'il faut pouvoir accéder aux parents et descendants), par exemple, un objet HTMLInputElement, sa propriété form et le nom de cet objet (par ex. truc) this.form.truc.form.truc.form.truc etc.
Existe t-il une autre solution, ou celle-ci est-elle adaptée ?
Il y a toujours plus d'un chemin... mais ce que tu proposes ici remplit son but, et permet d'avoir plusieurs objets de ce type sur la même page.
-- Y.D.
Le 27/11/2010 09:21, thierry a écrit :
Soit un objet COMPLETION qui contient deux elements html [...]
Dans le constructeur, l'EventListener 'keypress' est branché sur le premier
élément.
Dans la fonction de cet EventListener, je voudrais accéder au second élément,
mais le "this" de cette fonction est une référence au premier élément qui ne
permet pas d'accéder au second.
J'ai donc ajouter dans le constructeur:
this.search.obj = this;
Ainsi l'élément search contient une *référence* à l'objet dont il fait partie [...]
(en fait, ça me parait bizarre cette idée d'un contenu qui contient son contenant).
Ici, rien ne contient rien. Tu l'as écrit, tu as simplement ajouté /une
référence/ comme propriété à l'élément HTML search vers l'objet javascript qui
contient une référence vers lui. Le risque inhérent a cette construction est la
circularité this.search.obj.search.obj.search.obj... Note que tu as la même
chose avec tous les objets HTML (puisqu'il faut pouvoir accéder aux parents et
descendants), par exemple, un objet HTMLInputElement, sa propriété form et le
nom de cet objet (par ex. truc) this.form.truc.form.truc.form.truc etc.
Existe t-il une autre solution, ou celle-ci est-elle adaptée ?
Il y a toujours plus d'un chemin... mais ce que tu proposes ici remplit son but,
et permet d'avoir plusieurs objets de ce type sur la même page.
Soit un objet COMPLETION qui contient deux elements html [...] Dans le constructeur, l'EventListener 'keypress' est branché sur le premier élément.
Dans la fonction de cet EventListener, je voudrais accéder au second élément, mais le "this" de cette fonction est une référence au premier élément qui ne permet pas d'accéder au second.
J'ai donc ajouter dans le constructeur: this.search.obj = this;
Ainsi l'élément search contient une *référence* à l'objet dont il fait partie [...]
(en fait, ça me parait bizarre cette idée d'un contenu qui contient son contenant).
Ici, rien ne contient rien. Tu l'as écrit, tu as simplement ajouté /une référence/ comme propriété à l'élément HTML search vers l'objet javascript qui contient une référence vers lui. Le risque inhérent a cette construction est la circularité this.search.obj.search.obj.search.obj... Note que tu as la même chose avec tous les objets HTML (puisqu'il faut pouvoir accéder aux parents et descendants), par exemple, un objet HTMLInputElement, sa propriété form et le nom de cet objet (par ex. truc) this.form.truc.form.truc.form.truc etc.
Existe t-il une autre solution, ou celle-ci est-elle adaptée ?
Il y a toujours plus d'un chemin... mais ce que tu proposes ici remplit son but, et permet d'avoir plusieurs objets de ce type sur la même page.