Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme de class en Javascript

Appel d'une méthode à l'aide d'une autre méthode dans 1 href

    1 janvier 2009 à 20:58:31

    Bonsoir,

    Ca fait pas mal de temps que je suis sur ce probleme.

    Je travaille en Javascript évidement.

    J'ai en fait une classe JeuImage qui comporte 3 méthodes :

    -afficheCarte
    -deplaceCarte
    -effaceCarte

    Voici le détail de ces méthodes:



    afficheCarte : function(x,y)
    {
    document.write("<div id=\"img_x\" style=\"position:absolute;left:0;top:0;\"> <a href=\"#\" onClick=\"javascript:this.effaceCarte();<code type="javascript"></code>\" > <img src="+this.img+"/> </a> </div>");
    //document.getElementById("img_x").style.right = parseInt(600);

    document.getElementById("img_x").style.left = parseInt(x)+"px";
    document.getElementById("img_x").style.top = parseInt(y)+"px";

    }, // fin afficheCarte()





    deplaceCarte : function(x,y)
    {
    // inutile que je détaille cette méthode car elle n'intervient pas dans mon probleme
    }, // deplaceCarte()





    effaceCarte : function()
    {
    alert('ok');
    //clearInterval();

    // suppréssio n de l'image
    var body = document.getElementsByTagName('body')[0];var img_x = document.getElementById('img_x');body.removeChild(img_x);

    }, // effaceCarte()








    Mon probleme vient du fait que dans la fonction afficheCarte ce morceau de code : " <a href=\"#\" onClick=\"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




    ________________________
    Un annuaire complet des écoles de musique, de chant et conservatoires de France :
    www.musique-ecole.fr
    • Partager sur Facebook
    • Partager sur Twitter
      1 janvier 2009 à 21:40:48

      document.write, cay mal.
      Sinon :
      document.write('<div id="img_x" style="position:absolute;left:0;top:0;"><a href="#" onclick="effaceCarte();" ><img src="'+this.img+'" /></a></div>");
      
      • Partager sur Facebook
      • Partager sur Twitter
        1 janvier 2009 à 22:28:47

        Je sais bien que c'ets mal mais disons que je débute =)

        Ca ne marche cependant pas :s

        Une autre idée...?

        Merci de ce début d'aide =)
        • Partager sur Facebook
        • Partager sur Twitter
          1 janvier 2009 à 23:12:33

          Lol, le code type="javascript" en plein milieu c'est mignon...

          document.write("<div id=\"img_x\" style=\"position:absolute;left:0;top:0;\"> <a href=\"#\" onClick=\"javascript:this.effaceCarte();\" > <img src="+this.img+"/> </a> </div>");
          


          Chez moi, avec ce code, Firebug indique bien que la méthode effaceCarte() est appelée...
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            1 janvier 2009 à 23:28:30

            problème de contexte. ici "this" représente l'objet DOM du <a>, qui ne possède pas de méthode effaceCarte();

            try again. il a un petit nom ton objet ? donne le JS complet.

            ( edit ) ha oui, vire moi ce "javascript:" il n'est jamais utile. du javascript n'a rien a faire dans un attribut href="" jamais. Et dans le onclick, c'est évident que c'est du javascript. pas besoin de préciser.
            • Partager sur Facebook
            • Partager sur Twitter
              2 janvier 2009 à 12:23:15

              Citation : Golmote

              Lol, le code type="javascript" en plein milieu c'est mignon...

              document.write("<div id=\"img_x\" style=\"position:absolute;left:0;top:0;\"> <a href=\"#\" onClick=\"javascript:this.effaceCarte();\" > <img src="+this.img+"/> </a> </div>");
              



              Chez moi, avec ce code, Firebug indique bien que la méthode effaceCarte() est appelée...




              Chez moi c'ets pas du tout le cas. Je met un alert dans la méthode effaceImage() et c'est pas pour autant que cette méthode est appellé.

              Merci pour le "javascript:" c est vrai que c'est un peu idiot là :p



              Sinon voici ma class :




              function JeuImage(img)
              {
              this.img = img;
              }


              JeuImage.prototype =
              {


              afficheCarte : function(x,y)
              {
              //document.write("<div id=\"img_x\" style=\"position:absolute;left:0;top:0;\"> <a href=\"javascript:this.effaceCarte();\" > <img src="+this.img+"/> </a> </div>");
              //document.write('<div id="img_x" style="position:absolute;left:0;top:0;"><a href="#" onClick="javascript:this.effaceCarte();" ><img src="'+this.img+'" /></a></div>');

              document.getElementById('img_x').innerHTML = " <a href=\"#\" onClick=\"effaceCarte();return=false;\" > <img src="+this.img+"/> </a>";


              document.getElementById("img_x").style.left = parseInt(x)+"px";
              document.getElementById("img_x").style.top = parseInt(y)+"px";

              }, // fin afficheCarte()





              deplaceCarte : function(x,y)
              {
              // assez long et pas important pour le probleme ^^
              },




              effaceCarte : function()
              {
              alert('ok');
              //clearInterval();

              // suppréssio n de l'image
              //var body = document.getElementsByTagName('body')[0];var img_x = document.getElementById('img_x');body.removeChild(img_x);

              }, // effaceCarte()

              }








              J'ai simplement mis un alert dans la méthode effaceCarte()... mais celui ci n'est pas déclenché. Donc ma méthode n'est pas accessible.
              • Partager sur Facebook
              • Partager sur Twitter
                2 janvier 2009 à 12:29:07

                Citation : nod_

                problème de contexte. ici "this" représente l'objet DOM du <a>, qui ne possède pas de méthode effaceCarte();

                try again. il a un petit nom ton objet ? donne le JS complet.

                ( edit ) ha oui, vire moi ce "javascript:" il n'est jamais utile. du javascript n'a rien a faire dans un attribut href="" jamais. Et dans le onclick, c'est évident que c'est du javascript. pas besoin de préciser.


                Donc comme nod_ l'a dit, envoie le code complet, ou alors le nom de l'objet dans lequel tu déclare toutes ces jolies méthodes afin de remplacer this par le nom de cet objet ;) .
                • Partager sur Facebook
                • Partager sur Twitter
                  2 janvier 2009 à 12:33:03

                  Je viens de mettre le code en éditant mon ancien message ci dessus... ^^

                  Cependant le re-voici :


                  function JeuImage(img)
                  {
                  this.img = img;
                  }


                  JeuImage.prototype =
                  {


                  afficheCarte : function(x,y)
                  {
                  //document.write("<div id=\"img_x\" style=\"position:absolute;left:0;top:0;\"> <a href=\"javascript:this.effaceCarte();\" > <img src="+this.img+"/> </a> </div>");
                  //document.write('<div id="img_x" style="position:absolute;left:0;top:0;"><a href="#" onClick="javascript:this.effaceCarte();" ><img src="'+this.img+'" /></a></div>');

                  document.getElementById('img_x').innerHTML = " <a href=\"#\" onClick=\"effaceCarte();return=false;\" > <img src="+this.img+"/> </a>";


                  document.getElementById("img_x").style.left = parseInt(x)+"px";
                  document.getElementById("img_x").style.top = parseInt(y)+"px";

                  }, // fin afficheCarte()





                  deplaceCarte : function(x,y)
                  {
                  // assez long et pas important pour le probleme ^^
                  },




                  effaceCarte : function()
                  {
                  alert('ok');

                  }, // effaceCarte()

                  }
                  • Partager sur Facebook
                  • Partager sur Twitter
                    2 janvier 2009 à 13:26:06

                    Enleve la , a la fin, si c'est le dernier couple nom:valeur :
                    JeuImage.prototype =
                    {
                    
                    
                    afficheCarte : function(x,y)
                    {
                    //document.write("<div id=\"img_x\" style=\"position:absolute;left:0;top:0;\"> <a href=\"javascript:this.effaceCarte();\" > <img src="+this.img+"/> </a> </div>");
                    //document.write('<div id="img_x" style="position:absolute;left:0;top:0;"><a href="#" onClick="javascript:this.effaceCarte();" ><img src="'+this.img+'" /></a></div>');
                    
                    document.getElementById('img_x').innerHTML = " <a href=\"#\" onClick=\"effaceCarte();return=false;\" > <img src="+this.img+"/> </a>";
                    
                    
                    document.getElementById("img_x").style.left = parseInt(x)+"px";
                    document.getElementById("img_x").style.top = parseInt(y)+"px";
                    
                    }, // fin afficheCarte()
                    
                    
                    
                    
                    
                    deplaceCarte : function(x,y)
                    {
                    // assez long et pas important pour le probleme 
                    },
                    
                    
                    
                    
                    effaceCarte : function()
                    {
                    alert('ok');
                    
                    } // effaceCarte()
                    
                    }
                    

                    Et dans le lien, fait donc : onclick="JeuImage.effaceCarte()"
                    • Partager sur Facebook
                    • Partager sur Twitter
                      2 janvier 2009 à 13:39:13

                      J' ai enlevé la , et j'ai essayé avec : onClick=JeuImage.effaceImage()

                      Mais cela ne marche toujours pas.

                      Alala ce problème me rend dingue.

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Probleme de class en Javascript

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown