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

Résolu
ludoviskm Messages postés 9 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 20 janvier 2009 - 20 janv. 2009 à 09:45
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 20 janv. 2009 à 14:38
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

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
20 janv. 2009 à 11:17
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         
3
ludoviskm Messages postés 9 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 20 janvier 2009
20 janv. 2009 à 14:08
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!
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
20 janv. 2009 à 14:38
>>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   
0
Rejoignez-nous