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 :

[POO] setInterval + méthode


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Paniez
    Homme Profil pro
    Communication & Webservices
    Inscrit en
    Janvier 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Communication & Webservices
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 186
    Par défaut [POO] setInterval + méthode
    Bonjour,

    J'ai écrit un objet par le "mode" prototype.
    Dans la définition des méthodes, j'ai :
    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
    prem : function()
    {
    ...
    setInterval("deuxieme(_param)",5000);
    setInterval("troisieme()",5000);
    ...
    }
    deuxieme : function(_param)
    {
    ...
    }
    troisieme : function()
    {
    ...
    }
    L'appel de setInterval me renvoi un undefined. J'ai essayé avec le rajout de function :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setInterval(function(){deuxieme(_param);},5000);
    et aussi avec this, mais rien n'y fait.


    Merci d'avance

  2. #2
    Rédacteur

    Homme Profil pro
    Responsable de projet
    Inscrit en
    Mai 2009
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de projet
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 634
    Par défaut
    Salut,

    setInterval nécessite 2 paramètres : la fonction (entre guillement) et un délai (en ms). Exemple :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    setInterval("deuxieme(_param)", 2000);
    setInterval("troisieme()", 2000);

  3. #3
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    sachant aussi que les arguments de la fonction sont normalement placés en troisième paramètre de setInterval;

  4. #4
    Membre confirmé Avatar de Paniez
    Homme Profil pro
    Communication & Webservices
    Inscrit en
    Janvier 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Communication & Webservices
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 186
    Par défaut
    Re,
    Citation Envoyé par ornitho13 Voir le message
    Salut,

    setInterval nécessite 2 paramètres : la fonction (entre guillement) et un délai (en ms). Exemple :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    setInterval("deuxieme(_param)", 2000);
    setInterval("troisieme()", 2000);
    Erreur de copier-coller, j'ai corrigé.

    Je pense plutôt qu'il n'arrive pas à aller chercher ma méthode du fait que c'est dans l'objet courant (d'où l'essai avec mon this au début).

  5. #5
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    Citation Envoyé par Paniez Voir le message
    Re,

    Erreur de copier-coller, j'ai corrigé.

    Je pense plutôt qu'il n'arrive pas à aller chercher ma méthode du fait que c'est dans l'objet courant (d'où l'essai avec mon this au début).
    je vois que tu as édité ton poste original pour rajouter les millisecondes mais tu n'as pas rajouté les guillemets ! ton code chez toi possède-t'il bien ces guillemets ?

  6. #6
    Membre confirmé Avatar de Paniez
    Homme Profil pro
    Communication & Webservices
    Inscrit en
    Janvier 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Communication & Webservices
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 186
    Par défaut
    Citation Envoyé par Willpower Voir le message
    je vois que tu as édité ton poste original pour rajouter les millisecondes mais tu n'as pas rajouté les guillemets ! ton code chez toi possède-t'il bien ces guillemets ?
    Re,
    Suite à vos messages (et je pense avoir testé cette option), j'ai (re)mis les double-quote et non, il ne trouve pas la méthode.
    C'est en farfouillant que j'avais trouvé cette option en repassant par "function".
    Si je veux rester logique, sans me préoccuper de la sémantique, le code serait plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    setInterval("this.deuxieme(_param)",5000);
    setInterval("this.troisieme()",5000);
    En mettant ce genre de syntaxe, Firebug me dit "this.deuxieme is not a function".

  7. #7
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    edit: je n'avais pas vu que tu étais dans un "object" en fait, au temps pour moi :

    crée une variable pour sauvergarder le this et appelle tes autres fonction sur cette variable :

    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
    prem : function()
    {
    ...
    var that = this;
    setInterval("that.deuxieme(_param)",5000);
    setInterval("that.troisieme()",5000);
    ...
    }
    deuxieme : function(_param)
    {
    ...
    }
    troisieme : function()
    {
    ...
    }
    désolé, de ne pas avoir vu ça tout de suite.


    edit: re au temps pour moi, la bonne solution est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    prem : function()
    {
    ...
    var that=this,fn1 = function(_param){that.deuxieme();},fn2 = function(){that.troisieme()};
    setInterval(fn1,5000);
    setInterval(fn2,5000);
    ...
    }
    car setInterval est executé et défini (tout comme un eval) en dehors de la fonction et le string évalué n'a donc pas accès à tes variables locales.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/11/2014, 14h46
  2. [PHP 5.3] POO - Créer méthode pour une recherche multi-critères
    Par almoha dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2014, 15h52
  3. [POO] [Héritage] Méthode non héritée
    Par WebDream dans le forum Langage
    Réponses: 9
    Dernier message: 09/10/2008, 13h52
  4. [POO] ajout méthodes sur l'objet Array
    Par kimcharlene dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 24/04/2008, 16h40
  5. [POO] Problème avec setInterval/méthodes d'écriture
    Par Lpu8er dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/07/2006, 15h37

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