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 :

Faire cohabiter un compte à rebours et l'heure (deux codes)


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 394
    Par défaut Faire cohabiter un compte à rebours et l'heure (deux codes)
    Bonjour,

    J'ai deux codes :
    1. affiche un compte à rebours avec actualisation d'un iframe définit après 2 minutes
    2. affiche l'heure


    Et je n'arrive pas à les faire cohabiter, l'heure prend le dessus sur le compte à rebours...

    Voici mes codes...

    Codes pour l'heure
    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
    function date_heure(id)
    {
            date = new Date;
            annee = date.getFullYear();
            moi = date.getMonth();
            mois = new Array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
            j = date.getDate();
            jour = date.getDay();
            jours = new Array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
            h = date.getHours();
            if(h<10)
            {
                    h = "0"+h;
            }
            m = date.getMinutes();
            if(m<10)
            {
                    m = "0"+m;
            }
            s = date.getSeconds();
            if(s<10)
            {
                    s = "0"+s;
            }
            // resultat = 'Nous sommes le '+jours[jour]+' '+j+' '+mois[moi]+' '+annee+' Il est '+h+':'+m+':'+s;
    	    resultat = h+':'+m+':'+s;
            document.getElementById(id).innerHTML = resultat;
            setTimeout('date_heure("'+id+'");','1000');
            return true;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script  type="text/javascript">window.onload = date_heure('date_heure');</script>

    Codes pour le compte à rebours et l'actualisation de l'iframe
    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
    <script type="text/javascript">
    // ------------------------
    window.onload=function() {
     
     
    	 var reload_delay = 1000 * 1 * 121; // toutes les 2 minutes
     
      launch_count_down(reload_delay); // lance le compte à rebour
     
      window.setInterval(function() {
     
     
        window.frames.Example2.location.reload()
        window.frames.messagei.location.reload()
      }, reload_delay);		
    };
     
    // ------------------------
    function launch_count_down(count_down_delay) {
      // Compte à rebours
      var count_down_div = document.getElementById("count_down_div");
      var count_down = 0;
      var count_delay = 1000; // a chaque seconde
      count_down_div.textContent = "Actualisation de l'écran dans " + heures_minutes_secondes((count_down_delay) / 1000)+"''";
      window.setInterval(function() {
        count_down += count_delay;
        count_down_div.textContent = "Actualisation de l'écran dans " + heures_minutes_secondes((count_down_delay - count_down) / 1000)+"''";
        if( count_down == count_down_delay ){
          count_down = 0; // on réinitalise
        }
      }, count_delay);
    }
     
    // ------------------------
    function heures_minutes_secondes(secondes) {
      var temps = new Date();
      temps.setTime(secondes * 1000);
      if (secondes > 60 * 60) {
        // supérieur à 1 heure
        return (
          temps.getHours() - 1 + ":" + temps.getMinutes() + "' " + temps.getSeconds()
        );
      } else {
        return temps.getMinutes() + "' " +temps.getSeconds();
      }
    }
    </script>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div style="background-color:#000000; font-family:Calibri, sans-serif; color:#A6A6A6; font-size:10.0pt;font-style:italic; text-align:left;" id="count_down_div"></div>
    Ma question, est-il possible d'afficher les deux en même temps sur la même page...

    Ps : séparément, les deux fonctionnent très bien.

    Merci d'avance

  2. #2
    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 : 74
    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


    Manque de rigueur dans la déclaration des variables, proscrire les variables globales et abandonner "var" au profit de "let".

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div id="testHeure"></div>
    <div id="count_down_div"></div>

    Code JavaScript : 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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    window.addEventListener('load', ev => {
        // le DOM est construit et la page web est visible
     
        // début code du test
     
        const elemTestHeure = document.getElementById("testHeure");
     
        function date_heure() {
            const
                mois = new Array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'),
                jours = new Array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
     
            let
                date = new Date,
                annee = date.getFullYear(),
                moi = date.getMonth(),
                j = date.getDate(),
                jour = date.getDay(),
                h = date.getHours(),
                m = date.getMinutes(),
                s = date.getSeconds();
     
            if (h < 10) {
                h = "0" + h;
            }
     
            if (m < 10) {
                m = "0" + m;
            }
     
            if (s < 10) {
                s = "0" + s;
            }
     
            let resultat = 'Nous sommes le ' + jours[jour] + ' ' + j + ' ' + mois[moi] + ' ' + annee + ' Il est ' + h + ':' + m + ':' + s;
     
            elemTestHeure.innerHTML = resultat;
     
            setTimeout(() => {
                date_heure(id);
            }, '1000');
     
            return true;
        }
     
        function heures_minutes_secondes(secondes) {
            let temps = new Date();
     
            temps.setTime(secondes * 1000);
     
            if (secondes > 60 * 60) {
                // supérieur à 1 heure
                return (temps.getHours() - 1 + ":" + temps.getMinutes() + "' " + temps.getSeconds());
            } else {
                return (temps.getMinutes() + "' " + temps.getSeconds());
            }
        }
     
        function launch_count_down(count_down_delay) {
            // Compte à rebours
            let 
                count_down_div = document.getElementById("count_down_div"),
                count_down = 0,
                count_delay = 1000; // 1s
     
            count_down_div.textContent = "Actualisation de l'écran dans " + heures_minutes_secondes((count_down_delay) / 1000) + "''";
     
            setInterval(function () {
                count_down += count_delay;
                count_down_div.textContent = "Actualisation de l'écran dans " + heures_minutes_secondes((count_down_delay - count_down) / 1000) + "''";
     
                if (count_down == count_down_delay) {
                    count_down = 0; // on réinitalise
     
                    console.log(`reload iframes`);
                }
            }, count_delay);
        }
     
        launch_count_down(20000); // lance le compte à rebour pour 20s
        date_heure();
     
        // fin code du test
     
    }, {
        capture: false,
        passive: true,
        once: false
    });

    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.)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pour donner l'explication simple à ton problème : tu ne peux pas avoir 2 window.onload dans la page.
    Il faut regrouper :

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    window.onload = function(){
        date_heure(.....);
        launch_count_down(......);
    }
    Ou avec la syntaxe de mon collègue ci-dessus.

    Sachant que les fonctions elles-mêmes (function ...) n'ont pas besoin d'être "à l'intérieur".
    Dernière modification par Invité ; 05/10/2018 à 13h01.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 394
    Par défaut
    Merci pour vos réponses, je vais tester...

    Maintenant, je suis obligé d'utiliser des variables VAR, car le navigateur de ma SMART TV n'accepte pas les LET

    EDIT :

    J'arrive à utiliser vos codes, le compte à rebours fonctionne, mais l'heure s'affiche mais ne se met pas à jour... de plus, j'ai l'impression que le morceau de code suivant à disparu... il est utilisé pour ne mettre QUE ces deux iframe à jour toutes les deux minutes...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      window.setInterval(function() {
     
     
        window.frames.Example2.location.reload()
        window.frames.messagei.location.reload()
      }, reload_delay);

Discussions similaires

  1. [PPT-2007] Compte à rebours et heures ?
    Par Kirikiri2007 dans le forum Powerpoint
    Réponses: 1
    Dernier message: 30/12/2013, 08h25
  2. Faire clignoter un compte à rebours
    Par Alban 56 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 08/11/2010, 16h58
  3. Afficher heure + compte à rebours dans barre de titre
    Par Zaza91280 dans le forum VB.NET
    Réponses: 2
    Dernier message: 14/04/2010, 15h23
  4. comment faire un simple compte a rebour ?
    Par PARADOKS dans le forum Général Python
    Réponses: 1
    Dernier message: 06/12/2008, 11h24
  5. Compte à rebours, tout dépend de l'heure. . .
    Par kevinf dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 28/02/2008, 13h18

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