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

jQuery Discussion :

Retour d'une fonction


Sujet :

jQuery

  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut Retour d'une fonction
    Bonjour je développe actuellement un diaporama de 6 images qui défilent automatiquement, ça fonctionne via le code ci-dessous :

    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
     
     
    var diapoOK = true;
    var i = 0;
    var resultat = diaporama();
     
    function diaporama() {
     
    	/*Si la variable diapoOK est à true, on lance le programme*/
     
    		if (diapoOK){
     
    			i++;
     
    			var image = i;
     
    			var precedent = '#img' + (i-1);
    			var actuel = '#img' + i;
     
    			if (i == 1){
    				var precedent = '#img6';
    			}
     
    			$(precedent).fadeOut(2000);
    			$(actuel).fadeIn(2000);
     
    			if (i == 6) {image = i; i = 0;}	
     
    			return (image);
    		}
    	}
     
    setInterval(diaporama, 5000);
    J'appelle ma fonction diaporama toutes les 5 secondes et celle-ci est censé me retourner l'indice de l'image actuellement affichée dans ma variable globale resultat sauf que dans la pratique, la variable image prend bien les différentes valeurs de i dans la fonction, mais resultat reste désespérément à 1 et là je bloque

    Comment faire pour que resultat dans le prog principal récupère bien les différentes valeurs de image de la fonction ?

    Merci d'avance.

  2. #2
    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
    ??? retour pourquoi faire

    https://fiddle.jshell.net/4gv0fwmb/
    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 !

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut
    Je souhaite récup l'image actuellement affiché par le diaporama pour coder des boutons suivant et précédent. Si c'est l'image 3 qui est affichée actuellement, le clic sur suivant affichera l'image 4.

  4. #4
    Candidat au Club
    Homme Profil pro
    Ingénieur en Technologie de l'Informations
    Inscrit en
    Février 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en Technologie de l'Informations

    Informations forums :
    Inscription : Février 2016
    Messages : 4
    Par défaut
    Il suffit d'assigner ta variable resultat à chaque fois que tu parcours ta function Diaporama() au lieu de faire un return

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut
    J'ai remplacé var resultat = diaporama(); par var resultat = 0; et la ligne return (image); par resultat = image; mais ça ne fonctionne toujours pas, resultat reste bloqué à 0 maintenant.

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 212
    Par défaut
    Bonjour,
    il me semble que le plus simple pour toi est de mettre à jour une variable globale imageEncours = i dans ta fonction.

  7. #7
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut
    Je m'en suis tiré en fait via ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    setInterval(function(){
                    alert(resultat);
             }, 5000);
    Les différentes valeurs stockés dans resultat sont ainsi rafraichies.

  8. #8
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 212
    Par défaut
    j'ai donc rien compris au problème !

  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
    La solution laisse en effet perplexe ...
    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
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut
    J'ai essayé d'être le plus clair possible pourtant, dans mon code, lorsque je testais resultat avec un alert par exemple, il restait figé avec la première valeur de image

    Il fallait en fait que je la rafraichisse, par exemple avec setInterval.

  11. #11
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut


    C'est logique !

    Lorsque vous faites : var resultat = diaporama();, diaporama() est exécuté une seule fois et résultat prend la valeur return (image);.

    Lorsque vous faites setInterval(diaporama, 5000);, chaque appel de la fonction se termine toujours par return (image); mais cette valeur n'est affectée à aucun paramètre, le paramètre résultat en ignore tout !

    Avec setInterval( function(){ console.log( diaporama() ); }, 5000); tous les valeurs vont s'afficher dans la console (touche F12).

    Avec setInterval( function(){ resultat = diaporama(); }, 5000);, résultat ne pouvant contenir qu'une valeur il contiendra celle du dernier appel.

    Pour stocker toutes les valeurs, il faut un array.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var resultat = [];
     
    resultat.push( diaporama() );
     
    setInterval( function(){ resultat.push( diaporama() ); }, 5000 );

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  12. #12
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Par défaut
    Bonjour Danielhagnoul

    Lorsque vous faites setInterval(diaporama, 5000);, chaque appel de la fonction se termine toujours par return (image); mais cette valeur n'est affectée à aucun paramètre, le paramètre résultat en ignore tout !
    Si, le retour de la fonction est stocké dans resultat, j'avais déclaré cette ligne dans mon programme initial :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var resultat = diaporama();
    Sinon oui pour stocker toutes les valeurs il faut un array mais je souhaitais juste, à chaque fois, obtenir la dernière valeur prise par image dans la fonction et la stocker dans resultat du prog principal.

    Au passage, à votre connaissance, à part firebug, vous connaissez d'autres debuggeur utile et pratique en jquery ?

Discussions similaires

  1. retour d'une fonction
    Par papy_tergnier dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 15/05/2006, 17h21
  2. [XML][XSLT][debutant]retour d'une fonction
    Par maxvador dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 30/03/2006, 14h12
  3. recuperer en php le retour d'une fonction plsql
    Par gismoblue dans le forum Langage SQL
    Réponses: 1
    Dernier message: 14/03/2006, 16h39
  4. PL/SQL retour d'une fonction
    Par aaronw dans le forum PL/SQL
    Réponses: 2
    Dernier message: 13/12/2005, 13h25
  5. [Oracle 9.1] Types de retour d'une fonction PL/SQL
    Par ftrifiro dans le forum PL/SQL
    Réponses: 8
    Dernier message: 12/10/2005, 16h54

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