malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 2010
-
28 févr. 2006 à 12:34
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 2010
-
28 févr. 2006 à 15:08
Hello,
bon, je vais tâcher de la faire court.
J'ai une page dans laquelle je définis des objets js.
Puis j'instancie ces objets.
Ensuite, j'ai du html, des boutons, sur lesquels je place des évènements. Dans ces évènements, je tente de faire appel aux méthodes de mes objets.
Malheureusement, ça ne marche pas, mes instances n'existent plus.
Bref ça donne grosso modo ça :
<script type="text/javascript">
function objet1 () {
}
objet1.prototype.start () {
with (objet1) {
bla bla
}
}
objet1.prototype.methodeEvent = function (truc) {
with (objet1) {
bla bla
}
}
Mais au milieu, le onclick="obj.methodeEvent('bla');" ne passe pas du tout. obj.methodeEvent n'est pas une fonction. Si je ne préfixe pas avec obj, il me dit que methodeEvent est indéfini.
Je voudrais, si possible : une explication (histoire de pas mourir bête), et une solution (tant qu'à faire ;-) ).
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 28 févr. 2006 à 13:48
Hello,
merci pour la réponse déjà.
Mais qu'as tu changé là au juste ?
Si ce n'est que la méthode start () est appelée avant le html ? Et dans mon cas, je ne peux pas. De toutes façons, ça ne change rien : mon objet est instancié. La pméthode start () est une autre méthode dont j'ai besoin plus tard (c'est un timer en fait).
Le problème est l'appel sur l'évènement : obj.methodeEvent('bla') ne passe pas.
J'ai résolu (temporairement), en faisant ujn truc bien tordu:
sur l'évènement, j'appelle une fonction normale : onclick="appelMethode ('bla');"
et dans le js APRES le html, je fais ceci :
function appelMethode (bla) {
obj1.methodeEvent(bla);
}
Et comme j'ai plusieurs instances d'ujn même objet, j'ai été obligé de jouer avec un id d'instance (je crées mes instances dans un tableau, je récupère la clef courante qui est aussi l'id de ma balise html sur laquelle se trouve l'évènement, et j'appelle la méthode correspondante à l'instance dont la clef est celle-ci...je sais c'est pas clair lol).
néanmoins, je teste ton code et j'essaye de reproduire mon problème avec...2mn :-)
2mn later...
Ahem, j'ai modifié ton code parce qu'en l'état il ne fonctionnait pas, mais en effet tu avais modifié plus que ce que je pensais ;-) :
<script type="text/javascript">
function objet1 ()
{
alert('objet1');
}
objet1.prototype.start = function ()
{
with (objet1)
{
alert('start');
}
}
objet1.prototype.methodeEvent = function (truc)
{
with (objet1)
{
alert('methodeEvent='+truc);
}
}
et là, ça tourne, et c'est un gros soucis pour moi lol parce que c'est exactement la structure que j'ai (avais) et qui ne tourne pas...
Je ne veux pas mettre mon code ici parce qu'il est un peu long...mais je viens de le réécrire à peu près tel qu'il était, et décidément...je ne vois pas où est l'erreur.
Je dois manquer quelque chose...
Enfin, en tous cas, merci, parce que ça me permet de voir que ce que j'avais fait devrait fonctionner, et que je dois juste ne pas avoir les yeux en face des trous, là, sur mon code (une petite bévue a dû s'y glisser).
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 28 févr. 2006 à 15:00
j'avais précisé dans mon dernier message
que le test était uniquement avec IE, mais
cette partie à sûrement été enlevée par
des extra-terrestres...
syntaxe différente entre FF et IE, hélas.
Cordialement. Bul. ~ Mon Site qu'il est à Moi ~<FO>
</FO></S< body>
Vous n’avez pas trouvé la réponse que vous recherchez ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 28 févr. 2006 à 14:46
Je te montrerai mon code, ce sera plus simple.
L'exemple que je mets plus haut, adapté de celui de Bul, fonctionne à merveille.
Mais pas dans mon code lol.
Je testerai quand même avec le this.agir = agir dans le constructeur, oki :-)
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 28 févr. 2006 à 14:52
plusieurs méthodes pour faire de l'Orienté Objet en JS,
j'en proposais une différente de celle utilisée
car j'en connais mieux la syntaxe, comme elle
me semble pouvoir s'appliquer partout (?) et
toujours (?) je n'ai jamais qu'utilisé que ça.
je pense que tu n'as qu'un "problème de syntaxe"
>>Si ce n'est que la méthode start () est appelée avant le html
non, bien entendu, après, ça baignerai aussi, j'ai fait comme ça pour
l'exemple, pour éviter 2 balises <script...., c'est tout.
>>ton code parce qu'en l'état il ne fonctionnait pas
euh ? ben si, mais en l'état hein, sans rien d'autre.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 28 févr. 2006 à 15:08
Oui, ça ça fonctionne ;-) Sauf dans mon code lol.
Le mystère reste entier pour moi...mais sur ce coup c'est moi le fautif : ton code marche Bul, je l'ai testé; mais dans mon code j'ai tjrs le soucis. Je suis persuadé que hj'ai fait une connerie quelquepart, ailleurs dans la page, qui provoque cette erreur.
Je trouverai plus tard...à tête reposée :-)