begin process at 2010 03 20 09:14:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript Orienté objet (POO)

 > 

Classes

 > 

Problème de débutant en javascript: evenement fonction


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de débutant en javascript: evenement fonction

vendredi 23 mai 2008 à 15:30:03 | Problème de débutant en javascript: evenement fonction

gillespockpock

Voici mon code (la classe Designer):
Designer = function(){
    this.dom=document.getElementById("area");
    this.tables=[];
   
    this.ajouterTable = function(){
       this.placerTable();
        //this.dom.removeEventListener("click",this.placerTable,false);

    }
   
    this.placerTable = function(){
        var table = new Table (this,"Nouvelle table");//crée une table
        table.initialiser();
        this.tables.push(table);
        alert("c'est fait");
    }
}

Si je fais:
var d = new Designer();
d.ajouterTable();
J'obtiens "C'est fait" (ça marche), 
mais si je modifie la fonction ajouterTable() comme ceci:

this.ajouterTable = function(){
       //this.placerTable();
        this.dom.removeEventListener("click",this.placerTable,false);

    }

lorsque je clique, la fonction placerTable() est bien appellée mais ne va pas jusque au bout, elle semble bloquer sur la ligne "table.initialiser(); ".
POURQUOI ?
Ma classe "Table" est bien programmée, ca semble venir de l'evenement.


vendredi 23 mai 2008 à 15:35:19 | Re : Problème de débutant en javascript: evenement fonction

gillespockpock

Pardon c'est ici le bon code:

Voici mon code (la classe Designer):
Designer = function(){
    this.dom=document.getElementById("area");
    this.tables=[];
   
    this.ajouterTable = function(){
       this.placerTable();
        //this.dom.addEventListener("click",this.placerTable,false);

    }
   
    this.placerTable = function(){
        var table = new Table (this,"Nouvelle table");//crée une table
        table.initialiser();
        this.tables.push(table);
        alert("c'est fait");
    }
}

Si je fais:
var d = new Designer();
d.ajouterTable();
J'obtiens "C'est fait" (ça marche), 
mais si je modifie la fonction ajouterTable() comme ceci:

this.ajouterTable = function(){
       //this.placerTable();
        this.dom.addEventListener("click",this.placerTable,false);

    }

lorsque je clique, la fonction placerTable() est bien appellée mais ne va pas jusque au bout, elle semble bloquer sur la ligne "table.initialiser(); ".
POURQUOI ?
Ma classe "Table" est bien programmée, ca semble venir de l'evenement.

vendredi 23 mai 2008 à 15:53:42 | Re : Problème de débutant en javascript: evenement fonction

ralecul

Salut,

Marre de redire toujours les mêmes choses...

Designer = new function(){
    var _dom   = document.getElementById("area");
    var _tables = [];
    var _that    = this;
   
    this.ajouterTable = function(){
        _dom.addEventListener("click", function() { _that.placerTable(); }, false);

    }
   
    this.placerTable = function(){
        var table = new Table (this, "Nouvelle table");//crée une table
        table.initialiser();
        _tables.push(table);
        alert("c'est fait");
    }
}

Bon pour la peine le code n'est pas testé !
vendredi 23 mai 2008 à 16:05:30 | Re : Problème de débutant en javascript: evenement fonction

ralecul

Ou si placerTable n'a pas besoin d'être publique :

Designer = new function(){
    var _dom   = document.getElementById("area");
    var _tables = [];
    var _that    = this;
   
    this.ajouterTable = function(){
       
_dom.addEventListener("click", placerTable, false);
    }
   
    function placerTable(){
        var table = new Table (this, "Nouvelle table");//crée une table
        table.initialiser();
        _tables.push(table);
        alert("c'est fait");
    }
}
vendredi 23 mai 2008 à 16:53:08 | Re : Problème de débutant en javascript: evenement fonction

gillespockpock

Non ce n'est pas ce que je veux, mais j'ai trouvé, il faut faire un bind(): j'ai ajouté cette fonction:

function bind(objet, methode) {
    //fonction réalisant l'exécution de la méthode dans le contexte de son objet associé
    return function() {
        return methode.apply(objet, arguments);
    }
}

je l'ai appellée ici:
this.ajouterTable = function(){
    this.dom.addEventListener("click",bind(this,this.placerTable),false);
}

Ca marche !

Lol _that=this, pourquoi pas!
merci quand même



Cette discussion est classée dans : fonction, function, table, placertable, ajoutertable


Répondre à ce message

Sujets en rapport avec ce message

fonction javascript [ par phil ] Bonjourvoici mon pb: function changeFrame(frame1,frame2){ top.nomdeframe1.location=frame1 top.nomdeframe2.location=frame2 comment doit-on écrire ce sc function afficher(calque) [ par biloui59 ] Salut tt le mondeje ne comprends pas pourquoi la fonction suivante ne marche pas:function afficher(calque) { for(i=1;i nom=calque"+i+"; document.get Tri d'une table en fonction du click sur une colonne [ par manutu ] salut a tousj ai un problème. J'ai une table avec plusieurs colonnes. Je dois trier la table par défaut sur la premiere et ensuite sur la colonne sur appelle d'un fonction d'une iframe [ par davwart ] BOnjour à tous.. j'ai un petit probleme avec un appel de fonction,je m'explique : j'ai un document qui contient une iframe "correctionFrame" , dans la nom de la fonction exécutée [ par franz ] Bonjour j'aimerais savoir s'il existe un moyen pour connaître le nom de la function dans laquelle je me trouve.ex:function toto(){   alert("Nom de la onkeypress = function sous IE ne fonctionne pas, une autre solution? [ par maelob ] Bonjour à tous,comme expliquer dans ce sujet : http://www.javascriptfr.com/infomsg_FONCTION-REPLACE-EMULER-CAPS-LOCK_1069004.aspx#7Je suis en train de Fonction a # variable [ par Teclis01 ] Bonjour,je voulais juste savoir si on pouvait faire des fonctions qui ont un nombre de parametres d'entrées variable. Par exemple :function alerter(sT Connaitre la fin d'une fonction [ par Angelblade ] Bonjour à tous, je vais essayer de vous expliquer mon souci ^^'.Je veux pouvoir répéter une portion de code tous les X ms et une fois que le code a ét Prblème de function [ par tepe ] BonjourJ'ai un problème avec une fonction externe.Dans mon ReFrame();popup(); Le problème, la fonction ReFrame f Appel d'une fonction avec window.opener [ par lowkey ] Salut à tous !J'ai une page : page.php avec une fonction :function gor(){   alert('ok');}J'ouvre un popup avec : function WindowChangeRoomm(page,inter


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,920 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales