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 :

Animer plusieurs compteurs


Sujet :

jQuery

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 366
    Par défaut Animer plusieurs compteurs
    Bonjour à tous,

    En m'inspirant de ce Fiddle (http://jsfiddle.net/350D/ckeo5v2b/), je tente de créer une page avec des compteurs animés : http://jsfiddle.net/hgdfcb1b/1/
    Malheureusement, mon tout petit niveau en JS / HTML / CSS ne me permet pas de trouver comment faire en sorte que l'ensemble de mes compteurs (classe .compteur) soient animés avec des variables différentes (selon #id).
    Je suis sûr que c'est tout bête, et votre aide me fera progresse à grands pas !

    Merci d'avance pour votre aide !

    Sylvain M.

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 717
    Par défaut
    vous pouvez faire cela avec avec plusieurs appels à "animate"
    http://jsfiddle.net/hgdfcb1b/2/

    dans ce code j'ai juste fait un copier / coller mais si vous avez plus de compteurs, le code sera plus clair en utilisant une boucle.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 366
    Par défaut
    Merci beaucoup Mathieu,
    C'est déjà SUPER ! Mais effectivement, j'ai pas mal de compteurs, et j'aimerais bien trouver une méthode pour animer l'ensemble des compteurs de la page (même paramètres / durée)
    Je ne suis malheureusement pas capable de créer cette boucle seule (mais je vais chercher quand même !). Si tu as des conseils, idées

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 717
    Par défaut
    voilà un exemple avec au début la liste des différents compteurs et ensuite la boucle qui construit l'affichage et qui lance l'animation

    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
    34
    35
    36
    37
    38
    39
    40
    41
        var listeCompteurs = [
            {
                "libelle" : "Observations",
                "nombre" : 35694,
            },
            {
                "libelle" : "Espèces",
                "nombre" : 2552,
            },
        ];
     
     
        for (var i in listeCompteurs) {
     
            var compteur = listeCompteurs[i];
     
     
            // affichage
     
            var afficheNombre = $("<span/>");
     
            $("body").append(
                $("<div/>")
                    .append(compteur["libelle"] + "*: ")
                    .append(afficheNombre)
            );
     
     
            // animation
     
            afficheNombre.animate({
                "nombre" : compteur["nombre"],
            }, {
                duration: 1000 + compteur["nombre"] / 30,
                easing: 'swing',
                step: function (now) {
                    $(this).text(Math.ceil(now));
                },
            });
     
        }

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 366
    Par défaut
    Super, je suis tout prêt du but !!!
    Sauf que là, les compteurs sont ajouté au <body>, alors que j'aimerais qu'ils soient ajoutées à des cellules (<td> ou <div>) de ma page, identifiées par leur ID (et chaque compteur avec un ID différent).
    J'ai mis à jour le JsFiddle avec ton code, et j'ai ajouté un début de modification, mais je ne sais comment poursuivre :
    http://jsfiddle.net/hgdfcb1b/3/
    Est-ce que c'est "possible" ? (je me doute que la réponse est "oui", mais est-ce que c'est trop te demander de m'aider à finaliser cette fonctionnalité )

    Merci encore !!!

    Sylvain M.

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 717
    Par défaut
    le code qui ajoute les balises est $("body").append(...
    donc pour ajouter des éléments à un autre endroit, il suffit de modifier cela.

    dans la documentation se trouve des exemples des différentes façons d'utiliser "append"
    http://api.jquery.com/append/

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 366
    Par défaut
    Super : tes précisions m'ont permis de mieux comprendre
    Ça marche : http://jsfiddle.net/hgdfcb1b/4/
    N'hésite pas à me dire si tu vois des erreurs ou des optimisations possibles !
    Un grand MERCI !!!

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 366
    Par défaut
    Salut !

    Je laisse le sujet "Résolu", mais je me permet cette question "bonus"
    Avant que je n'envisage d'animer mes compteurs avec cette fonction, les nombres affichés étaient formatés avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Intl.NumberFormat().format(nombre) ;
    Mais maintenant, avec cette animation, je dois avouer que je ne sais pas du tout où/comment intégrer le formatage des nombres.

    Je vois que .append(Intl.NumberFormat().format(nombre)) fonctionne, mais si je le place dans la fonction .animate, ça ne fonctionne plus...

    Mes essais sur ce JsFiddle : http://jsfiddle.net/hgdfcb1b/5/

    Merci encore !

  9. #9
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 717
    Par défaut
    Citation Envoyé par SylvainM Voir le message
    Mes essais sur ce JsFiddle : http://jsfiddle.net/hgdfcb1b/5/
    je ne vois pas dans ce code où vous utilisez le formatage dans "animate"

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 366
    Par défaut
    Citation Envoyé par mathieu
    je ne vois pas dans ce code où vous utilisez le formatage dans "animate"
    C'est bien mon problème : je ne sais pas où placer le code de formatage dans "animate".
    J'ai juste mis le code de formatage dans la partie "// tests avec la fonction Intl.NumberFormat().format()", pour montrer le formatage attendu dans la page.
    Mais dès que j'essaie d'intégrer cela dans la fonction animate, ça ne fonctionne plus...

  11. #11
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 717
    Par défaut
    Citation Envoyé par SylvainM Voir le message
    Mais dès que j'essaie d'intégrer cela dans la fonction animate, ça ne fonctionne plus...
    c'est ça que j'aimerai voir, le code qui ne fonctionne pas.

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 366
    Par défaut
    Ok.

    Alors, par exemple, ici je tente dès le début dans l'array "listeCompteurs" :
    http://jsfiddle.net/hgdfcb1b/6/
    Mais de ce fait, les nombres deviennent du texte, et forcément l'animation ne marche plus...

    Dans celui-ci (http://jsfiddle.net/hgdfcb1b/7/) je tente au niveau de la fonction afficheNombre.animate(), mais le problème est le même...

    J'ai comme l'impression que la solution est ici (par exemple) : https://stackoverflow.com/questions/...jquery-counter
    Mais je ne sais pas la mettre en place dans mon contexte...

  13. #13
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 717
    Par défaut
    à chaque changement de valeur, c'est la fonction dans "step" qui est appelée donc c'est à cet endroit qu'il faut mettre le formatage du résultat :
    http://jsfiddle.net/hgdfcb1b/8/

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 366
    Par défaut
    C'est si simple quand on lit ton explication
    MERCI !!!
    Dommage qu'on ne puisse mettre qu'un seul pouce aux messages pour remercier. J'en rajoute ici :

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

Discussions similaires

  1. creer plusieur compteur de 32 bits
    Par denoune dans le forum VHDL
    Réponses: 0
    Dernier message: 21/05/2014, 16h36
  2. Animer plusieurs "entités"
    Par swain.dakota dans le forum OpenGL
    Réponses: 7
    Dernier message: 03/02/2013, 18h28
  3. Rafraichissement de plusieurs compteurs
    Par Sake_reflex dans le forum Android
    Réponses: 4
    Dernier message: 27/07/2011, 10h05
  4. Animer plusieurs images provenant du réseaux.
    Par wotan2009 dans le forum Graphisme
    Réponses: 1
    Dernier message: 02/05/2011, 12h32
  5. Animer plusieur bouton en As3
    Par Kefass dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 10/01/2009, 19h35

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