IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Comment faire du chainage de méthode ( comme jquery)


Sujet :

JavaScript

  1. #1
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut Comment faire du chainage de méthode ( comme jquery)
    Bonjour a tous , je cherche a implémenter dans mes scripts, le chainage de méthode , comme j'ai pu voir dans les framework jquery et autre ...
    Je n'ai pas trouvé de documentation sur la création/héritage de tel méthode sur le net si quelqu'un pouvais éclairer ma lanterne ou me donner quelques exemples ?

    Merci à tous ^^

    Voici un petit exemple pour illustrer mes propos :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    <HTML>
    <HEAD>
    <SCRIPT type="text/javascript">
    function testDiv(element){
     
    	this.element = document.getElementById(element);
    	this.borderRed = function(){
     
    		this.element.style.border = '2px solid red';
    		return element;
    	}
     
    	this.green =  function() {
    	 this.element.style.backgroundColor = 'green';
    	 return element;
    	}
    }
     
    function go(){
    		var maDiv = new testDiv("test");
    		maDiv.borderRed().green();
    }
     
    </SCRIPT>
    </HEAD>
    <BODY>
    <INPUT TYPE="button" VALUE="Effectuer les modifications" onClick="go()">
    <div id="test" style="border:2px solid #ccc;background-color:yellow;width:200px;height:200px;"></div>
    </FORM>
    </BODY>
    </HTML>
    j'ai donc un souçis lorsque j'essaye d'appeler la deuxième méthode ....
    J'aimerais donc comprendre pour pouvoir implémenter ce type de programmation dans mes prochains scripts

  2. #2
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    J'aimerais donc comprendre pour pouvoir implémenter ce type de programmation dans mes prochains scripts
    J'ai juste changé le return element en return this, et ça marche sous FFx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
     
    <HTML>
    <HEAD>
    <SCRIPT type="text/javascript">
    function testDiv(element){
     
    	this.element = document.getElementById(element);
    	this.borderRed = function(){
     
    		this.element.style.border = '2px solid red';
    		return this;
    	}
     
    	this.green =  function() {
    	 this.element.style.backgroundColor = 'green';
    	 return this;
    	}
    }
     
    function go(){
    		var maDiv = new testDiv("test");
    		maDiv.borderRed().green();
    }
     
    </SCRIPT>
    </HEAD>
    <BODY>
    <INPUT TYPE="button" VALUE="Effectuer les modifications" onClick="go()">
    <div id="test" style="border:2px solid #ccc;background-color:yellow;width:200px;height:200px;"></div>
    </FORM>
    </BODY>
    </HTML>
    Il faut bien retourner this, puisque tu veux lui appliquer d'autres méthodes après....

    Bonne chance!

  3. #3
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    ... j'ai un grand moment de solitude erreur de noob

    Merci beaucoup

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    si ça te rassure ... j'ai pas compris le coup du thos ...
    que represent this en l'occurence ?
    Pour moi c'etait la fonction pas l'objet,
    j'essayais de faire un
    qui me paraissait plus logique ???
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    Justement je cherchais a appliquer mes modifications sur l'objet , et non sur l'élément passé en paramètre...
    et en faisant return this.element je ne répondais pas a ma problématique, grossière erreur de ma part...

  6. #6
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    Justement je cherchais a appliquer mes modifications sur l'objet , et non sur l'élément passé en paramètre...
    et en faisant return this.element je ne répondais pas a ma problématique, grossière erreur de ma part...
    Ca me fait ça aussi. Quand on se concentre trop sur quelque chose, on finit par ne plus voir très clair....

    C'est le moment d'aller prendre un café

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    10 litres de café plus tard ...

    J'ai toujours pas compris pourquoi this et pas this.element

    Je vais essayer les substances illicites ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    Pendant ce temps la à tiruana...

    et non car this.element est une propriété de mon objet , or , lorsque je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var maDiv = new testDiv("test");
    <== on passe en paramètre ce qui fera office de this.element

    Puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maDiv.borderRed().green();
    green(), renvois l'objet en entier , pour pouvoir travailler ensuite sur this.element de l'objet, si l'on renvoyais this.element , on renverrais l'objet div , qui lui est une propriété privé de mon objet , donc on ne peut pas le modifier directement sur borderRed()

    Voila pourquoi on doit retourner l'objet et non juste une des propriétés

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Y'a toujours un truc qui m'échappe .

    je ne comprends pas pourquoi dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    mafocntion('monid'){ 
    //this=l'objet  ???
    }
    pour moi this c'est la fonction pas l'objet ... ???
    pour moi cela relève du mystère
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    this, renvois l'objet , car la méthode appartient à la classe et en javascript , this , renvois sur l'objet sur lequel on est positionné

    test tout bète , fait un alert(this) , tu il te retournera [object] , si tu utilises firebug , regarde les propriétés de et objet et tu verras qu'il s'agit de l'objet instancié.

    le schmilimiliblick ^^

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    alors pourquoi ceci ne fonctionne-t-il pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type='text/javascript'>
    function showAlert() {
    	alert(this.id);
    }
    </script>
    </head>
     
    <body>
    <div id='alert' onclick="showAlert()">hh</div>
    </script>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Et ce resultat n'eclaire pas plus ma lanterne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script type='text/javascript'>
    function showAlert() {
    var liste=''
    	for (elt in this){liste+= elt +" => "+this[elt]+"\n";}
    	alert (liste)
    }
    </script>
    </head>
     
    <body>
    <div id='alert' name='coucou' onclick="showAlert()">hh</div>
    </script>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  13. #13
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    Car lors de l'appel a ta fonction showAlert() tu ne passes aucun paramètre, donc
    l'objet renvoyer par this dans ta fonction showAlert(), renvoit ... showAlert() elle même.
    essaye de passer comme paramètre this ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <script type='text/javascript'>
    function showAlert(element) {
    var liste=''
    	for (element in this){liste+= elt +" => "+element[elt]+"\n";}
    	alert (liste)
    }
    </script>
    </head>
     
    <body>
    <div id='alert' name='coucou' onclick="showAlert(this)">hh</div>
    </script>
    onclick="showAlert(this)" va renvoyer l'objet div

    en utilisant this a l'intérieur de ta fonction, tu utilises les propriétés / méthode de "l'objet" showAlert() j'espère être assez clair dans mes explications ?

    dans un objet , this renvois le parent le plus haut si tu préfères :-)

  14. #14
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    i je comprends bien mais à aucin moment tu ne passes l'objet en paramètre, puisqeu tu oasse un string de l'id

    d'ou mon étonnement que le fait de passer un string fasse pointer la focntion sur l'objet ????
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  15. #15
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    heu tu as du sauter une ligne regarde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function testDiv(element){
     
    	this.element = document.getElementById(element);
    /*****/
    }
    element en paramètre est effectivement une string
    mais ensuite , est désigné comme pointant vers : document.getElementById(element);

    donc par la suite lorsque j'appel mon ojbet et que je pointe vers this.element , je point vers ma div et non plus sur une string

  16. #16
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    heu non c'est bon je viens de capter ... rein a voir avec le fait d'avoir mis this.element ...

    c'est le fait de faire this=obj ...

    je restais sur un paramètre alors qu'il fallait raisoner en prototype
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/03/2012, 18h10
  2. Comment faire pour sérialiser des méthodes ?
    Par Piet dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 17/12/2009, 14h54
  3. [VCL] Comment faire une barre d'outils skinable comme FireFox ?
    Par DarkChamallo dans le forum Composants VCL
    Réponses: 23
    Dernier message: 07/05/2008, 18h03
  4. Newbie : comment faire une IHM comme eclipse?
    Par eponette dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 02/03/2006, 16h25
  5. Comment faire un pop-up comme MSN?
    Par AlDum dans le forum C++Builder
    Réponses: 2
    Dernier message: 10/02/2004, 00h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo