Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2832 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Appel d'une méthode dans une classe avec href....

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Appel d'une méthode dans une classe avec href....

n°1832989
yan000
Posté le 31-12-2008 à 20:38:22  profilanswer
 

Bonsoir,
 
Ca fait une journée que je suis sur ce probleme. Mais je vasi m'arreter pour ce soir car c'ets le réveillon :p
 
Je travaille en Javascript.
 
J'ai en fait une classe JeuImage qui comporte 3 méthodes :  
 
-afficheCarte
-deplaceCarte
-effaceCarte
 
Voici le détail de ces méthodes:
 
 

Code :
  1. afficheCarte : function(x,y)
  2. {
  3. document.write("<div id=\"img_x\" style=\"position:absolute;left:0;top:0;\">      <a
  4. href=\"javascript:this.effaceCarte(); \">  <img src="+this.img+"/>    </a>    </div>" );
  5. document.getElementById("img_x" ).style.left = parseInt(x)+"px";
  6. document.getElementById("img_x" ).style.top = parseInt(y)+"px";
  7. }, // fin afficheCarte()
  8. deplaceCarte : function(x,y)
  9. {
  10. // cette fonction deplace la carte sur l'écran... le code ne servira à rien pour mon probleme  
  11. }
  12. effaceCarte : function()
  13. {
  14. clearInterval();
  15. // suppréssio n de l'image  
  16. var body = document.getElementsByTagName("body" )[0];
  17. var img_x = document.getElementById("img_x" );
  18.         body.removeChild(img_x);
  19. }, // effaceCarte()


 
 
 
Mon probleme vient du fait que dans la fonction afficheCarte ce moreceau de code : " <a  
href=\"javascript:this.effaceCarte(); \"> " n'arrive pas à appeler la méthode effaceCarte() :s
 
 
Comment faire s'il vous plait ?
 
 
 
Je vous remercie par avance !! :)
 
 
 
A bientôt  
 
 
 
 
 
 
 
 
_________
Annuaire des écoles de musique, de chant et conservatoires de France ==> www.musique-ecole.fr

mood
Publicité
Posté le 31-12-2008 à 20:38:22  profilanswer
 

n°1832998
FR-DarkRod
Informag€€k
Posté le 31-12-2008 à 21:46:15  profilanswer
 

http://forum.hardware.fr/hfr/Progr [...] 1766_1.htm
 
Y a déjà eu un soucis dessus , si celà peut t'aider :)

n°1833060
yan000
Posté le 01-01-2009 à 17:53:02  profilanswer
 

Salut, merci beaucoup pour ce lien mais je l'ai lu avant de poster mon message... il ne répond pas à ma question. Ou alors ai je pas compris et dans ce cas là serais ce possible de me ré-expliquer dans mon cas ci dessus...?
 
Si c'est possible pourrait on me donner la ligne de code qui permettrait d appeler la méthode : effaceCarte dans la méthode afficheCarte ?  
 
 
Merci encore :)

n°1833065
Profil sup​primé
Posté le 01-01-2009 à 18:34:40  answer
 

bah, this, c'est un objet qui correspond à ton élément <a>, et donc cet objet n'a rien à voir avec ta classe qui comprend les méthodes effaceCarte() et afficheCarte()
 
Je pense que tu mélanges ces deux syntaxes :
 

Code :
  1. this.effaceCarte(); //appel de la méthode effaceCarte de l'objet this
  2. effaceCarte(this); //appel de la méthode effaceCarte avec comme argument l'objet this


 
Renseignes toi sur this ;)
 
EDIT : je peux me tromper je n'y connais pas grand chose en javascript  :o


Message édité par Profil supprimé le 01-01-2009 à 18:35:02
n°1833069
yan000
Posté le 01-01-2009 à 18:46:02  profilanswer
 

C'est gentil de ta réponse ^^
J ai essayé les deux et ça ne marche pas.
 
this.effaceCarte() // pour moi ca réfère à effaceCarte de la même class...
 
Pour ce qui est de this je comprends assez bien son fonctionnement mais si je poste ici c'est que justement contrairement à d habitude je n'arrive pas à faire fonctionner mes lignes de codes :s

n°1833071
Profil sup​primé
Posté le 01-01-2009 à 19:00:31  answer
 

Dans une classe, this représente n'importe quelle instance.
Dans un tag HTML, c'est donc l'objet qui représente de la balise courante.
C'est objet a ses méthodes respectives, pour un formulaire par exemple :

Code :
  1. this.focus() // méthode
  2. this.value // attribut


 
Donc, si tu travailles dans un TAG html, tu fais appelles à l'objet qui le représente et pas le tien, celui qui possède les méthodes auxquelles tu tentes d'accéder ;)

n°1833079
yan000
Posté le 01-01-2009 à 19:44:33  profilanswer
 


 
 
 
 
Ok merci ^^ mais je cherche toujours comment faire pour appeler ma fonction effacerImage et sans succès de mon coté :$
 
Pourquoi la ligne de code ci apres contenu dans afficheCarte() ne permet pas , lorsqu on clique sur le lien d'appeler effaceCarte() alors qu ils font parti de la meme class?
 
 

Code :
  1. <a href=\"javascript:this.effaceCarte();


 
J'ai meme esseyé avec le code suivant mais rien n'y fait... :  
 
 

Code :
  1. <a href=\"javascript:effaceCarte();


 
 
Je précise que je n'arrive pas à exécuter la methode: effacerCarte(). J'ai mis un alert dans cette méthode pour voir si on passait dedant mais apparement non...  :s
 
 
 
Que faut il que je modifie ?
 
 
Merci votre patience.


Message édité par yan000 le 01-01-2009 à 19:48:34
n°1833089
yan000
Posté le 01-01-2009 à 20:30:57  profilanswer
 


 
 
 
 
 
Pourtant si je peux :s
 
Si je fais :  
 

Code :
  1. <a href="javascript:alert('ok');"> blabla </a>


 
Ca marche ...mais je ne peux pas appeler une méthode dans le href... ce qui me parait problematique.
 
J'ai aussi essayé avec le onClick mais cela n'apelle pas non plus la fonction.
 
J'ai encore regardé sur l'autre topic masi je ne comprends pas à quoi sert le "return:false;" .
 
De toute façon en copiant ceci, la méthode n'est quand meme pas appelé.
 
 
Merci de vos prochaines réponses et merci de cette réponse :p

n°1833104
masklinn
í dag viðrar vel til loftárása
Posté le 01-01-2009 à 21:35:54  profilanswer
 

Omagad [:pingouino]

 

1. On ne met pas de js dans un @href. Oui c'est possible, c'est pas pour ça que c'est pas gerbant.
2. Que ce soir dans @href ou dans @onclick (pas de majuscules :fou:), `this` réfère à l'objet DOM (donc A ici), je sais pas d'où t'es venue l'idée que ça correspondait à je ne sais quel objet
3. Le code que tu donnes au dessus, ça définit des fonctions (de manière immonde d'ailleurs) pas des méthodes, par définition une méthode ça fait partie d'un objet.
4. `return false;` dans le onclick, ça sert à empêcher l'exécution de l'action normale du lien (qui est d'ouvrir l'url indiquée par @href)
5. document.write, c'est immonde aussi, d'ailleurs.
6. utiliser des handlers d'évènements un minimum propres plutôt que de mettre du JS directement dans le HTML ça serait pas du luxe


Message édité par masklinn le 01-01-2009 à 21:38:12

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1833105
yan000
Posté le 01-01-2009 à 21:36:16  profilanswer
 

Merci beaucoup, je n 'ai pas encore esseyé mais je voulais savoir à quoi servait le innerHTML dans ce cas là?
 
Je te dis si ca marche =)
Merci :)

mood
Publicité
Posté le 01-01-2009 à 21:36:16  profilanswer
 

n°1833106
yan000
Posté le 01-01-2009 à 21:38:25  profilanswer
 

Pour répondre Masklinn :
 
Ce sont bien des méthodes !!! Je n'ai pas donné l 'intégralité de ma class ! suelement une partie...
Donc napparaissent pas le constructeur, ni les attributs... et toutes les méthodes... ;)
 
Je continu à tester et merci quand meme :)

n°1833107
masklinn
í dag viðrar vel til loftárása
Posté le 01-01-2009 à 21:38:47  profilanswer
 

yan000 a écrit :

Merci beaucoup, je n 'ai pas encore esseyé mais je voulais savoir à quoi servait le innerHTML dans ce cas là?

 

Je te dis si ca marche =)
Merci :)


https://developer.mozilla.org/en/DOM/element.innerHTML

yan000 a écrit :

Pour répondre Masklinn :

 

Ce sont bien des méthodes !!!


Ben ça n'y ressemble pas, mais dans tous les cas ce ne sont pas des méthodes sur Element

Message cité 1 fois
Message édité par masklinn le 01-01-2009 à 21:40:43

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1833109
yan000
Posté le 01-01-2009 à 21:47:04  profilanswer
 


 

masklinn a écrit :


Ben ça n'y ressemble pas, mais dans tous les cas ce ne sont pas des méthodes sur Element


 
 
J'apprécie ton investissement sur mon probleme, mais si je peux me permettre on ets pas tous "PRO" du javascript. J en suis loin mais est ce un défaut de commencer par les bases ?! ;)
 
J'ai entendu parlé des handler mais je ne veux pas les utilise rpour le moment car je trouve que j ai encore des lacune avec certaines choses...comme tu peux le voir ;)
 
J'apprends...
 
 
 
Merci pour l epxlication Fred =)
Je vais essayer de tester ca.

n°1833112
yan000
Posté le 01-01-2009 à 22:09:41  profilanswer
 


 
 
 
Voila j ai esseyé de testé .
en fait en dehors de ma classe, dasn mon code html j'ai crée un div avec comme id "img_x".
 
Puis dans mon fichier js, dans la méthode effaceCarte() j'ai mis le inner de la sorte :  

Code :
  1. getElementById('img_x').innerHTML = " <a href=\"javascript:this.effaceCarte();\" > <img src="+this.img+"/> </a>";


 
 
 
Seulement le problème persiste... quand je clique sur mon lien, la méthode effaceCarte() n'est pas déclenché.
 
Je cherche toujours... si quelqu un trouve... qu il le dis !! :D
 
Merci ^^

Message cité 1 fois
Message édité par yan000 le 01-01-2009 à 22:14:44
n°1833137
masklinn
í dag viðrar vel til loftárása
Posté le 02-01-2009 à 09:39:35  profilanswer
 

yan000 a écrit :

Voila j ai esseyé de testé .
en fait en dehors de ma classe, dasn mon code html j'ai crée un div avec comme id "img_x".

 

Puis dans mon fichier js, dans la méthode effaceCarte() j'ai mis le inner de la sorte :

Code :
  1. getElementById('img_x').innerHTML = " <a href=\"javascript:this.effaceCarte();\" > <img src="+this.img+"/> </a>";
  

Seulement le problème persiste... quand je clique sur mon lien, la méthode effaceCarte() n'est pas déclenché.

 

Je cherche toujours... si quelqu un trouve... qu il le dis !! :D

 

Merci ^^


Putain de bordel de merde t'es bouché ou t'es pas foutu de lire des posts en français [:pingouino]

 

On t'a dit que ton this (collé bien dégueulassement dans le @href) ça faisait référence à un élément HTML (soit A soit window) pas à je ne sais quel truc bizarre que tu as créé [:pingouino] [:mlc]

Message cité 1 fois
Message édité par masklinn le 02-01-2009 à 09:40:16

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1833159
yan000
Posté le 02-01-2009 à 12:04:51  profilanswer
 


 
 
 
Je l avais mis document.getElementById...
Et quant à FireBug je l'ai installé depuis pas mal de temps. Je vais encore jetter un coup d'oeil car ca m'embete de pas trouver la solution à ce problem :s
 
Merci encore =)

n°1833160
yan000
Posté le 02-01-2009 à 12:08:59  profilanswer
 

masklinn a écrit :


Putain de bordel de merde t'es bouché ou t'es pas foutu de lire des posts en français [:pingouino]
 
On t'a dit que ton this (collé bien dégueulassement dans le @href) ça faisait référence à un élément HTML (soit A soit window) pas à je ne sais quel truc bizarre que tu as créé [:pingouino] [:mlc]


 
 
 
Salut toi... tu as passé une mauvaise nuit dit donc... où alors ta femme a du bien te la faire sentir ! (je m'en tiens au même language que toi ;) )
 
Pour le "this" j'ai aussi essayé sans , je ne me contente pas d'essayer une ligne de code avant de reposter sur le forum ! :o
Si à l'intérieur de la méthode je fais simplement :  
 

Code :
  1. this.effaceCarte()


 
...alors dans ce cas là ca marche très bien, et la méthode est bien trouvée.
 
Or dans le href cela ne veut pas marcher.
 
 
Je tiens à te dire que si c'est pour me manquer de respect ou à t énerver comme tu le fais tu peux déjà ne plus venir poster ici. Car des gens comme toi sur les forum n'aide pas vraiment les gens mais les frustrent encore plus.
 
 
Merci.

Message cité 1 fois
Message édité par yan000 le 02-01-2009 à 12:10:11
n°1833174
yan000
Posté le 02-01-2009 à 13:04:31  profilanswer
 

Merci pour cette explication sur le this et mon href qui m'ont beaucoup éclairée !!! :)
 
Pour fireBug j'ai bien refais ce que tu m as di mais aucune erreur n'est détectée...
Meme avec le this LoL :D
 
Il faudrait en fait que je ne passe pas par le this... mais que j'appelle la méthode de l'objet instancié d'une autre manière.

Message cité 1 fois
Message édité par yan000 le 02-01-2009 à 13:10:05
n°1833182
yan000
Posté le 02-01-2009 à 13:54:45  profilanswer
 


 
 
 
 
 

Code :
  1. function JeuImage(img)
  2. {
  3.  this.img = img;
  4. }
  5. JeuImage.prototype =
  6. {
  7.      afficheCarte : function(x,y)
  8.      {
  9.       document.getElementById('img_x').innerHTML = " <a href=\"#\" onClick=\"JeuImage.effaceCarte();return false;\" > <img src="+this.img+"/> </a>";
  10.       document.getElementById("img_x" ).style.left = parseInt(x)+"px";
  11.       document.getElementById("img_x" ).style.top = parseInt(y)+"px";
  12.      }, // fin afficheCarte()
  13.      deplaceCarte : function(x,y)
  14.      {
  15.      // code inutile pour le probleme
  16.      }, // deplaceCarte()
  17.      effaceCarte : function()
  18.      {
  19.       alert('ok');
  20.      } // effaceCarte()
  21. }
  22. //////// en dehors de la class /////////
  23. document.write("<div id=\"img_x\"  style=\"position:absolute;left:0;top:0;\" > </div>" );
  24. JImage = new JeuImage("image/carree.jpg" );
  25. JImage.afficheCarte(  width/2  ,  height/2  );
  26. setInterval("JImage.deplaceCarte(3,1)" , 25); //2eme param : delay en millieme de secondes


 
 
J'ai essayé avec le point d'arret... c'est bisare il y passe apparemment mais n'exécute pas le alert... ou n importe quelle ligne de code présente dans la méthode effaceCarte().

n°1833207
yan000
Posté le 02-01-2009 à 16:34:29  profilanswer
 


 
 
 
 
Oui c'est ça que je dois faire en cliquant sur l'image.
Je ne peux malheureusement pas faire autrement. Dans le cadre d'un travail, je me dois de respecter la forme de la class que l'on m a chargé de faire.
Donc une méthode qui crée une image, une autre qui la supprime puis d'autres dont on ne parlera pas car inutile ici.
Il faut qu a chaque fois que je crée une instance d'un objet de la class JeuCarte, que je puisse avoir sa méthode qui la crée et sa méthode qui la supprime...
 
En faisant comme tu m'as di je ne pense pas que je pourrai en instancier autant que je veux et supprimer la carte que je veux à n'importe quel endroit de mon code...
 
Je ne sais pas si j'ai été clair :s
 
En tout cas merci de ta réponse =)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Appel d'une méthode dans une classe avec href....

 

Sujets relatifs
Passer un chemin absolu lors de l'appel du scriptSérialisation de la classe parente.
virtual dans une classe filleAppel a un script depuis c# puis recuperer une var
instanciation de classe impossible c++/cliDiagramme de classe
Génération de classe CS à partir d'un XSDDéclaration de classe
C appel Mathématica???Explications simple méthode
Plus de sujets relatifs à : Appel d'une méthode dans une classe avec href....


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR