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 :

Compte à rebours


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Par défaut Compte à rebours
    Bonsoir,

    J'essai d'insérer un compte à rebours dans ma page web comme suit:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <body>
    	<div id="countdown">
    	    <strong>Remaining time</strong> :
    	    <span id="countdown_day" >05</span> jours
    	    <span id="countdown_hour">11</span> heures
    	    <span id="countdown_min" >50</span> minutes
    	    <span id="countdown_sec" >22</span> secondes
    	</div>
    </body>

    et voici le javascript que j'ai inséré dans la même page:
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    countdownManager = {
        // Configuration
        targetTime: new Date('2012-11-05 00:00:00'), // Date cible du compte à rebours (00:00:00)
        displayElement: { // Elements HTML où sont affichés les informations
            day:  null,
            hour: null,
            min:  null,
            sec:  null
        },
        // Initialisation du compte à rebours (à appeler 1 fois au chargement de la page)
        init: function(){
            // Récupération des références vers les éléments pour l'affichage
            // La référence n'est récupérée qu'une seule fois à l'initialisation pour optimiser les performances
            this.displayElement.day  = jQuery('#countdown_day');
            this.displayElement.hour = jQuery('#countdown_hour');
            this.displayElement.min  = jQuery('#countdown_min');
            this.displayElement.sec  = jQuery('#countdown_sec');
            // Lancement du compte à rebours
            this.tick(); // Premier tick tout de suite
            window.setInterval("countdownManager.tick();", 1000); // Ticks suivant, répété toutes les secondes (1000 ms)
        },
        // Met à jour le compte à rebours (tic d'horloge)
        tick: function(){
            // Instant présent
            var timeNow  = new Date();
            // On s'assure que le temps restant ne soit jamais négatif (ce qui est le cas dans le futur de targetTime)
            if( timeNow > this.targetTime ){
                timeNow = this.targetTime;
            }
            // Calcul du temps restant
            var diff = this.dateDiff(timeNow, this.targetTime);
            this.displayElement.day.text(  diff.day  );
            this.displayElement.hour.text( diff.hour );
            this.displayElement.min.text(  diff.min  );
            this.displayElement.sec.text(  diff.sec  );
        },
        // Calcul la différence entre 2 dates, en jour/heure/minute/seconde
        dateDiff: function(date1, date2){
            var diff = {}                           // Initialisation du retour
            var tmp = date2 - date1;
            tmp = Math.floor(tmp/1000);             // Nombre de secondes entre les 2 dates
            diff.sec = tmp % 60;                    // Extraction du nombre de secondes
            tmp = Math.floor((tmp-diff.sec)/60);    // Nombre de minutes (partie entière)
            diff.min = tmp % 60;                    // Extraction du nombre de minutes
            tmp = Math.floor((tmp-diff.min)/60);    // Nombre d'heures (entières)
            diff.hour = tmp % 24;                   // Extraction du nombre d'heures
            tmp = Math.floor((tmp-diff.hour)/24);   // Nombre de jours restants
            diff.day = tmp;
            return diff;
        }
    };
    jQuery(function($){
        // Lancement du compte à rebours au chargement de la page
        countdownManager.init();
    });
    Le problème c'est que la date reste inerte dans la page (05 jours 11 heures 50 minutes 22 secondes), je n'ai pas compris c'est quoi l'erreur?

    Pourquoi le compte à rebours ne se met pas à decrémenter?
    Remarque: J'ai déja fait appel au fichier jquery-1.10.1.js

    Merci d'avance

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Mmmmh... m'étonnerait fortement que le setInterval avec des guillemets double fonctionne.

    Essaye plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    setTimeout(function(){countdownManager.tick();},1000);

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Par défaut
    Bonjour,

    Merci pour la réponse mais en se référant à ce que l'on trouve, on peut mettre le setInterval avec des guillemets double!

    Ca ne marche toujours pas.

    Cordialement.

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Euh... en fait ton script marche très bien, c'est juste que tu as mis la date cible en 2012, donc il peut pas décrémenter vu que la date est déjà passée... J'ai testé, ça marche très bien avec une date dans le futur

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Par défaut
    Ca ne marche toujours pas chez moi malgré que j'ai changé la date cible!

    Pouvez vous m'envoyer le code dont vous avez testé?

    Merci

  6. #6
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
    <script>
        countdownManager = {
            // Configuration
            targetTime: new Date('2015-1-05 00:00:00'), // Date cible du compte à rebours (00:00:00)
            displayElement: {// Elements HTML où sont affichés les informations
                day: null,
                hour: null,
                min: null,
                sec: null
            },
            // Initialisation du compte à rebours (à appeler 1 fois au chargement de la page)
            init: function() {
                // Récupération des références vers les éléments pour l'affichage
                // La référence n'est récupérée qu'une seule fois à l'initialisation pour optimiser les performances
                this.displayElement.day = jQuery('#countdown_day');
                this.displayElement.hour = jQuery('#countdown_hour');
                this.displayElement.min = jQuery('#countdown_min');
                this.displayElement.sec = jQuery('#countdown_sec');
     
                // Lancement du compte à rebours
                this.tick(); // Premier tick tout de suite
                window.setInterval("countdownManager.tick();", 1000); // Ticks suivant, répété toutes les secondes (1000 ms)
            },
            // Met à jour le compte à rebours (tic d'horloge)
            tick: function() {
                // Instant présent
                var timeNow = new Date();
     
                // On s'assure que le temps restant ne soit jamais négatif (ce qui est le cas dans le futur de targetTime)
                if (timeNow > this.targetTime) {
                    timeNow = this.targetTime;
                }
     
                // Calcul du temps restant
                var diff = this.dateDiff(timeNow, this.targetTime);
     
                this.displayElement.day.text(diff.day);
                this.displayElement.hour.text(diff.hour);
                this.displayElement.min.text(diff.min);
                this.displayElement.sec.text(diff.sec);
            },
            // Calcul la différence entre 2 dates, en jour/heure/minute/seconde
            dateDiff: function(date1, date2) {
                var diff = {}                           // Initialisation du retour
                var tmp = date2 - date1;
     
                tmp = Math.floor(tmp / 1000);             // Nombre de secondes entre les 2 dates
                diff.sec = tmp % 60;                    // Extraction du nombre de secondes
                tmp = Math.floor((tmp - diff.sec) / 60);    // Nombre de minutes (partie entière)
                diff.min = tmp % 60;                    // Extraction du nombre de minutes
                tmp = Math.floor((tmp - diff.min) / 60);    // Nombre d'heures (entières)
                diff.hour = tmp % 24;                   // Extraction du nombre d'heures
                tmp = Math.floor((tmp - diff.hour) / 24);   // Nombre de jours restants
                diff.day = tmp;
     
                return diff;
            }
        };
     
        jQuery(function($) {
            // Lancement du compte à rebours au chargement de la page
            countdownManager.init();
        });
     
    </script>
     
    <body>
     
        <div id="countdown">
            <strong>Remaining time</strong> :
            <span id="countdown_day" >05</span> jours
            <span id="countdown_hour">11</span> heures
            <span id="countdown_min" >50</span> minutes
            <span id="countdown_sec" >22</span> secondes
        </div>
     
    </body>
    Tout ce que je peux supposer c'est que ton appel à ton fichier jquery est incorrect. Regarde ta console js (touche F12 sous chrome et IE, extension firebug sous firefox)

Discussions similaires

  1. [timer] Compte à rebours pour redirection !
    Par Raideman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/12/2005, 20h07
  2. Compte à rebours
    Par Anduriel dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 29/12/2005, 20h12
  3. compte à rebours
    Par Datord dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 17/11/2005, 21h22
  4. compte à rebours
    Par etoile1506 dans le forum C
    Réponses: 10
    Dernier message: 27/10/2005, 15h20
  5. Compte à rebours trop rapide
    Par Anduriel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2005, 20h57

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