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 :

Convertir mon script en objet instanciable


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 108
    Par défaut Convertir mon script en objet instanciable
    :hello:

    J'ai fait un petit script qui fonctionne. Voici en gros la tête qu'il a :

    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
     
    var Diaporama = {
    	version: "1.0",
    	param1: "valeurParDefaut1",
    	param2: "valeurParDefaut2",
     
    	fonction1: function(img) {
    		// fait quelque chose
    	},
     
    	fonction2: function(img) {
    		// fait quelque chose
    	},
     
    	init: function (el, options) {
    		this.element = $(el);
    		this.param1 = options.param1;
    		this.param2 = options.param2;
     
    		$("img." + this.thumbClass).click(function() {
    			Diaporama.fonction1(this);
    		});
    	}
    }
    Et voici comment je l'appelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Diaporama.init("#monElement", {param1: "valeur1", param2: "valeur2"});
    Sauf que j'aimerais pouvoir l'appeler plusieurs fois dans la même page en changeant les paramètres. Il faudrait que je puisse l'instancier. Ca devrait donner un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    diapo1 = new Diaporama("#monElement", {param1: "valeur1", param2: "valeur2"});
    diapo2 = new Diaporama("#monAutreElement", {param1: "valeur3", param2: "valeur4"});
    Seulement je ne sais pas vraiment comment faire. Ca doit être un truc que les pros de l'Ajax font tout le temps, mais je ne sais pas comment m'y prendre. Pour info j'utilise jQuery. Avez-vous une idée ?

    Merci !

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Qu'est-ce qui ne fonctionne pas ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 108
    Par défaut
    Le script fonctionne, mais j'aimerais pouvoir l'instancier pour l'utiliser plusieurs fois dans la même page.

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Par défaut
    Citation Envoyé par Shuret Voir le message
    Le script fonctionne, mais j'aimerais pouvoir l'instancier pour l'utiliser plusieurs fois dans la même page.
    De la manière où tu as écrit ton script, tu as fait directement un objet instancié et non une classe

    Un manière toute conne et rapide de transformer ton truc en objet instanciable est celle-ci :

    ATTENTION : regarde bien les commentaires et comment je procède aux endroits ou tu appelles Diaporama.
    Puisque maintenant on parle d'instance.

    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
    //déclaration de la Classe Diaporama et de son constructeur
    var Diaporama = function() {
        this.init.apply(this,arguments); //on appelle init puisqu'apparament c'est la méthode d'initialisation.
    }
    //déclaration du prototype de cette classe :
    Diaporama.prototype = {
        constructor:Diaporama, //ne pas oublier cette ligne, sinon le constructeur sera "Object"
     
        version: "1.0",
        param1: "valeurParDefaut1",
        param2: "valeurParDefaut2",
     
        fonction1: function(img) {
            // fait quelque chose
        },
     
        fonction2: function(img) {
            // fait quelque chose
        },
     
        init: function (el, options) {
            //creation d'une variable faisant référence à this pour qu'elle puis être utilisée dans les fonctions qui sont déclarées dans le init.
            var _this = this;
            this.element = $(el);
            this.param1 = options.param1;
            this.param2 = options.param2;
     
            //ici ce n'est pas bon, tu tapes sur tout ce qui est .imgQuelqueChose. Il faudrait partir de ton élément parent, puisque c'est lui qui contient les images
            this.element.find("img." + this.thumbClass).click(function() {
                _this.fonction1(this); //on remplace Diaporama par _this
            });
        }
    }

  5. #5
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    @Shuret Si tu utilise JQuery je te recommande vivement de faire
    un plugin

    Actuellement tu appelles ton code ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Diaporama.init("#monElement", {param1: "valeur1", param2: "valeur2"});
    A la sauce JQuery tu pourra l'appeler ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $('#monElement').diaporama({param1: "valeur1", param2: "valeur2"});
    Et mieux encore, tu pourra appliquer plusieurs diaporama en une ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $('img.diapo').diaporama({ param1: "valeur1", param2: "valeur2"});
    Lit ce tuto

    Si besoin, je t'aide volontier

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Par défaut
    Citation Envoyé par marcha Voir le message
    @Shuret Si tu utilise JQuery je te recommande vivement de faire
    un plugin

    Actuellement tu appelles ton code ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Diaporama.init("#monElement", {param1: "valeur1", param2: "valeur2"});
    A la sauce JQuery tu pourra l'appeler ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $('#monElement').diaporama({param1: "valeur1", param2: "valeur2"});
    Et mieux encore, tu pourra appliquer plusieurs diaporama en une ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $('img.diapo').diaporama({ param1: "valeur1", param2: "valeur2"});
    Lit ce tuto

    Si besoin, je t'aide volontier
    J'étais aussi en train de me demander s'il valait mieux pas qu'il transforme son truc en plugin jquery, mais du coup j'ai préféré répondre à la question

Discussions similaires

  1. erreur dans mon script
    Par Swata dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2005, 00h02
  2. [langage]erreur dans mon script
    Par Fabouney dans le forum Langage
    Réponses: 11
    Dernier message: 30/06/2005, 14h58
  3. Réponses: 7
    Dernier message: 04/06/2004, 15h20
  4. Tcsh - Mon script ne marche pas
    Par Aramis dans le forum Linux
    Réponses: 5
    Dernier message: 13/05/2004, 18h26
  5. Mon script cron n'est pas pris en compte
    Par tomnie dans le forum Linux
    Réponses: 11
    Dernier message: 31/03/2004, 11h19

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