[JS] Débutant : Problème avec une classe et fonction.. [Résolu]

Signaler
Messages postés
9
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
20 janvier 2009
-
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
-
Bonjour à tous.
Je suis en train de developper une classe "Calendar" a partir de truc trouvé à droite et a gauche sur le net.
L'objet est instancié de la facon suivante :

Cal = new Calendar("19/01/2009","19/01/2009","div_calendar",null);

Ceci me crée un calendrier dans la div "div_calendar" avec deux bouton en haut qui me permettent de changer de mois. Ce calendrier est ecrit par des DOM.

Lorsque j'appelle la methode Cal.ChangeCurrentMonth(+1); dans mon fichier html cela marche parfaitement, mon calendrier s'incremente.

Aussi, dans ma methode qui ecrit le DOM, j'ai ajouté l'instruction suivante sur les boutons en question : (pour firefox)

oTd.setAttribute("onClick","this.ChangeCurrentMonth(+1);");

Mais la console d'erreur me dis que this.ChangeCurrentMonth(+1) est inconnu (logique je dirai car j'ecris la methode onClick sur l'element, et a cet instant this est une cellule DOM). J'ai donc testé en mettant ca :

oTd.setAttribute("onClick","Cal.ChangeCurrentMonth(+1);");  // Cal est le nom de mon objet instancié

Et ca marche (logique), mais ce n'est pas tres propre du tout (oui integrer le nom de l'instance dans la classe c'est tres moche). Aussi comment pourrais je faire pour resoudre ce problème? En gros il faudrait que soit je recuperer le nom de l'instance dans ma classe (par reflexivité?? je ne sais pas si c'est possible..) soit trouver un autre moyen.

Vous remrciant par avance.

3 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
bonjour,
....
var tmp=this;
oTd.onclick=function()
{ tmp.ChangeCurrentMonth(+1); }
...
peut-être ? j'aime pas setAttribute qui ne fonctionne pas pareil partout
Cordialement          [mon Site] [M'écrire] Bul         
Messages postés
9
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
20 janvier 2009

Effectivement il fallait passer par une variable intermediaure.. Curieux.
De plus j'ai viré le setAttributes qui m'oblige une detection de navigateur...!
Encore merci!
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
>>Curieux.
ben non... tu as expliqué toi même
     a cet instant this est une cellule DOM
mais je t'accorde que cela ne s'invente pas et que
       si je n'avais pas trouvé un exemple... je ne sais plus où...

>>De plus j'ai viré le setAttributes qui m'oblige une detection de navigateur...!
utiliser setAttribute oblige à tester ou ne pas utiliser ?
ne pas utiliser, ne nécessite rien d'autre que mon exemple justement, et j'aime mieux
mais bon... chacun ses goûts et la caravane passe en ne faisant pas le moine

          [mon Site] [M'écrire] Bul