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 :

Probleme pour plusieurs compte à rebours


Sujet :

JavaScript

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Points : 319
    Points
    319
    Par défaut Probleme pour plusieurs compte à rebours
    Bonjours, j'ai déjà lus plusieurs article et réussi à faire un compte à rebours mais je n'arrive pas à un crée d'autre car ils modifient le premier du fait de l'id.

    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
     
    var minutes = 0;
    var heures = 0;
    var secondes = 0;
    var actif = null;
     
    /*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    FONCTIONS INITIALISANT LE COMPTE A REBOURS
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
     
    function start_timer() 
    {
     
     
    	total_secondes = secondes * 1000; //Conversion en miliseconde pour window.setTimeOut
    	if (secondes > 60) 
    	{
    		minutes = Math.floor(secondes / 60);
    		secondes = secondes - minutes * 60;
    	}
    	if (minutes > 60) 
    	{
    		heures = Math.floor(minutes / 60);
    		minutes = Math.floor(minutes - heures * 60);
    	}
    	var actif = window.setInterval("change_timer()", 1000);
    	window.setTimeout("window.clearInterval(actif)",total_secondes);
    }
     
    /*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    AJOUT DE SECONDE AU COMPTE A REBOURS
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
    function add_time(time) 
    {
       secondes += time;
    }
     
    /*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    CHANGEMENT DU COMPTE A REBOURS
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
    function change_timer() 
    {
    	if (secondes > 0) 
    	{
    		secondes-= 1;
    	}
    	else 
    	{
    		if (secondes == 0 && minutes > 0) 
    		{
    			secondes = 59;
    			minutes-= 1;
    		}
    		else 
    		{
    			if (secondes == 0 && minutes == 0 && heures > 0) 
    			{
    			secondes = 59;
    			minutes = 59;
    			heure-= 1;
    			}
    		}
    	}
    	if (heures < 10) rheures = '0'+heures; else rheures = heures;
    	if (minutes < 10) rminutes = '0'+minutes; else rminutes = minutes;
    	if (secondes < 10) rsecondes = '0'+secondes; else rsecondes = secondes;
    	document.getElementById("count1").innerHTML = rheures+":"+rminutes+":"+rsecondes;
    }
    Je pense que le problème vient du fait qu'ils partagent les mêmes variables de temps(sec,min,heure) et pour l'affichage il faudrait changer l'id, mais j'ai essayer et n'y arrive pas quelqu'un aurait une solution SVP ?

  2. #2
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    J'arrive pas a utiliser ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <body onload="start_timer();">
    <div id="count1"></div>
    </body>

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Points : 319
    Points
    319
    Par défaut
    oui il faut utiliser la fonction add_time pour ajouter des secondes car elles sont à 0 d'origine Mais sinon le plus simple serais de concevoir une fonction de chrono dynamique dans laquelle on entre un parametre en seconde puis affiche directement le chrono la ou on appelle la fonction. Est-ce possible?

  4. #4
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Je ne comprend pas le fonctionnement de ton script!! J'arrive a rien avec. Mais il ya d'autre moyen de faire ca.

  5. #5
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Deja moi je te propose ca:
    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
    <script type="text/javascript" language="javascript">
    heus = 0;
    mins = 0;
    secs = 0;
    function time()
    {
     if (secs < 10) secs = "0"+Math.round(secs);
     else if(secs >= 60)
     {
      secs = "00";
      mins++;
     }
     if (mins < 10) mins = "0"+Math.round(mins);
     else if(mins >= 60)
     {
      mins = "00";
      heus++;
     }
     if (heus < 10) heus = "0"+Math.round(heus);
     else if(heus >= 24) heus = "00";
     heures = " "+heus + ":" + mins + ":" + secs;
     if (document.getElementById)
     {
      document.getElementById("count1").innerHTML= heures;
     }
     secs++;
     setTimeout("time()", 1000);
    }
    window.onload = time;
    </script>

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Points : 319
    Points
    319
    Par défaut
    Attend oué c'est galere la...je refait.

  7. #7
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Tien essaye ca dit moi si deja ca correspond a ce que tu veut:
    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
    <html>
    <head>
    <title>TIMER</title>
    <head>
    <script type="text/javascript" language="javascript">
    var tab=null;
    function arch(t)
    {
     tab=t;
    }
    heus = 0;
    mins = 0;
    secs = 0;
    function time()
    {
     if (secs < 10) secs = "0"+Math.round(secs);
     else if(secs >= 60)
     {
      secs = "00";
      mins++;
     }
     if (mins < 10) mins = "0"+Math.round(mins);
     else if(mins >= 60)
     {
      mins = "00";
      heus++;
     }
     if (heus < 10) heus = "0"+Math.round(heus);
     else if(heus >= 24) heus = "00";
     heures = " "+heus + ":" + mins + ":" + secs;
     if (document.getElementById && tab != null)
     {
      document.getElementById(tab).innerHTML= heures;
     }
     secs++;
     setTimeout("time()", 1000);
    }
    window.onload = time;
    </script>
    <body>
    <div><a onClick="arch('count1');" href="#">Cliker la</a></div>
    <div id="count1"></div>
    <div><a onClick="arch('count2');" href="#">Cliker la</a></div>
    <div id="count2"></div>
    </body>
    </html>

  8. #8
    Membre averti

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Points : 319
    Points
    319
    Par défaut
    Nan c'est sa et ton chrono est identique pour les 2, je voudrai plusieurs chrono differents. Voici une remise a niveau de l'ancienne version :

    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
     
    function chrono(temps)
    {
    	//Si un temps est passer en parametre (en seconde) on converti pour les minutes et heures
    	if ( temps != 0)
    	{
    		secondes=temps;
     
    		if (secondes > 60) 
    		{
    			minutes = Math.floor(secondes / 60);
    			secondes = secondes - minutes * 60;
    		}
    		if (minutes > 60) 
    		{
    			heures = Math.floor(minutes / 60);
    			minutes = Math.floor(minutes - heures * 60);
    		}
    	}
     
     
    	//Décrémentation du compteur
    	if (secondes > 0) 
    	{
    		secondes-= 1;
    	}
    	else 
    	{
    		if (secondes == 0 && minutes > 0) 
    		{
    			secondes = 59;
    			minutes-= 1;
    		}
    		else 
    		{
    			if (secondes == 0 && minutes == 0 && heures > 0) 
    			{
    			secondes = 59;
    			minutes = 59;
    			heure-= 1;
    			}
    		}
    	}
     
    	//Si le nombre est seul on rajoute un 0 pour l'affichage standard
    	if (heures < 10) rheures = '0'+heures; else rheures = heures;
    	if (minutes < 10) rminutes = '0'+minutes; else rminutes = minutes;
    	if (secondes < 10) rsecondes = '0'+secondes; else rsecondes = secondes;
     
    	chronometre = " "+rheures + ":" + rminutes + ":" + rsecondes;
     
    	//Affichage selon l'id
    	document.getElementById("count1").innerHTML= chronometre;
     
    	//Reactualisation du chrono
    	setTimeout("chrono(0)", 1000);
     
    }

  9. #9
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ben en partant de mon script tu peut adapter mais sache qu'il faudra une fonction comme la mienne par timer, car sinon tu ne peut pas incrementer ou decrementer plusieur en meme temps.
    Et ta fonction a des problemes quand je met chrono(100000) ca marche mais si je met chrono(10) rien!!

  10. #10
    Membre averti

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Points : 319
    Points
    319
    Par défaut
    Je crois que j'ai une piste avec la creation d'objet jsuis dessus la je vous tiens au courant.

  11. #11
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ok parcque ca m'interesse moi !

  12. #12
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Regarde ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <script type="text/javascript" language="javascript">
    function remind(msg1) {
    var msg = "This is a reminder after " + msg1 +" Secs";
    alert(msg); 
    }
    window.onload = time()
    </script>
    <body>
    <div><a onClick="setTimeout('remind(2)',2000);" href="#">Cliker la</a></div>
    <div><a onClick="setTimeout('remind(3)',3000);" href="#">Cliker la</a></div>
    </body>
    </html>

  13. #13
    Membre averti

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Points : 319
    Points
    319
    Par défaut
    C'est j'ai trouver ce qu'il me fallait jette un oeil la dessus :
    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
     
    function timingBox( sec, min, hour )
    {
    	this.secondes = sec;
    	this.minutes = min;
    	this.heures = hour;
    }
     
    function chrono(temps,tagid)
    {
    		var timeBox = new timingBox( 0, 0, 0);
    		//Si un temps est passer en parametre (en seconde) on converti pour les minutes et heures
    			timeBox.secondes=temps;
     
    			if (timeBox.secondes > 60) 
    			{
    				timeBox.minutes = Math.floor(timeBox.secondes / 60);
    				timeBox.secondes = timeBox.secondes - timeBox.minutes * 60;
    			}
    			if (timeBox.minutes > 60) 
    			{
    				timeBox.heures = Math.floor(timeBox.minutes / 60);
    				timeBox.minutes = Math.floor(timeBox.minutes - timeBox.heures * 60);
    			}
     
    		//Reajustage des valaures pour l'affichage
    		if (timeBox.heures < 10) rheures = '0'+timeBox.heures; else rheures = timeBox.heures;
    		if (timeBox.minutes < 10) rminutes = '0'+timeBox.minutes; else rminutes = timeBox.minutes;
    		if (timeBox.secondes < 10) rsecondes = '0'+timeBox.secondes; else rsecondes = timeBox.secondes;
     
    		chronometre = " "+rheures + ":" + rminutes + ":" + rsecondes;
    		temps--;	
    		//Affichage selon l'id
    		document.getElementById(tagid).innerHTML = chronometre;
     
    		//Reactualisation du chrono si different de 0.
    		if ( temps != 0)
    		{
    			setTimeout("chrono("+temps+", '"+tagid+"')", 1000);
    		}
    		else
    		{
    			setTimeout("autre()", 1000);
    		}
     
    }
    Le problème venait du fait qu'il faille stocker les valeures de temps séparement pour qu'il ne se partage pas les données. On a donc la fonction timingBox qui permet de stocker 3 valeures. On cree l'objet au debut de la fonction et on l'utilise tout le long pour garder l'independance
    La valeure 'tagid' reprensente l'id du recepteur de la phrase. Vous remarquerez aussi qu'il n'y a plus a s'enquiquiner a décrémenter car on appelle la fonction toutes les secondes . Une simple condition a la fin peut mettre fin a l'execution comme la. Vous en pensez quoi ?

  14. #14
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Cool merci par contre je comprens pas comment est interpreter le parametre temps car je met 1000 sec et ca fai 16min comment ca se fait?
    Et gros bug!!!
    Quand un premier compteur arrive a 0 il part dans le negatif :s:s!!
    Donc il faut mettre if(timeBox.secondes !=0) temps--;

  15. #15
    Membre averti

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Points : 319
    Points
    319
    Par défaut
    bah 1000 secondes sa fait 16 min 40 non ?

    sinon pour le compteur négatif sa devrait pas le faire avec sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    if ( temps >= 0)
    {
    	setTimeout("chrono("+temps+", '"+tagid+"')", 1000);
    }
    else
    {
            location.reload();
    }
    On recharge la page a la fin du compte a rebours

  16. #16
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if ( timeBox.secondes != 0 || timeBox.minutes !=0 || timeBox.heures != 0)
      {
       document.getElementById(tagid).style.display = "block";
       setTimeout("chrono("+temps+", '"+tagid+"')", 1000);
      }
      else
      {
        document.getElementById(tagid).style.display = "none";
       //document.location.reload();return(false);
      }
    Petit amelioration sympa!!

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

Discussions similaires

  1. [OL-2007] Insertion d'une signature pour plusieurs comptes
    Par Phil2205 dans le forum Outlook
    Réponses: 4
    Dernier message: 09/09/2009, 19h23
  2. Plusieurs compte à rebours
    Par killbrice dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/08/2009, 18h44
  3. [MySQL] Probleme pour plusieurs requetes
    Par deathsurfer dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/06/2008, 19h06
  4. Aide pour un compte à rebours
    Par fenix29 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 25/05/2008, 20h15
  5. Installation puis partage de prog pour plusieur compte..
    Par Invité1 dans le forum Administration système
    Réponses: 2
    Dernier message: 12/06/2006, 09h08

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