Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1231 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [JavaScript] Compte et Decompte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JavaScript] Compte et Decompte

n°1388566
HolySpirit
Posté le 16-06-2006 à 00:05:31  profilanswer
 

Bonjour, j'ai un problème avec un mini logiciel que j'essaye de faire :
 
Je veux faire apparaitre sur 3 champs distinct :
- l'heure actuelle
- l'heure d'un prochain événement ( qui ici apparait tout les 84 min )
- un compte à rebours de l'arrivé de cet evenement
 
A prioris ca parait simple, mais quelque chose déconne, et je ne vois pas quoi.
 
Je copie mon code ici, si quelqu'un pouvais m'aider ca serais sympa :)
 

Code :
  1. <html><head>
  2. <title>Gain SXP</title>
  3. <script type="text/javascript">
  4. var temps = new Date;
  5. var heure = temps.getHours();
  6. var minute = temps.getMinutes();
  7. var seconde = temps.getSeconds();
  8. var heuregain = 10 ;
  9. var minutegain = 11 ;
  10. var secondegain = 12 ;
  11. var heurerestant = heuregain - heure ;
  12. var minuterestant = minutegain - minute ;
  13. var seconderestant = secondegain - seconde ;
  14. function HeureCheck()
  15. { if (sec < 10)
  16.   { sec0 = "0"; }
  17.   else
  18.   { sec0 = ""; }
  19.         if (min < 10)
  20.         { min0 = "0"; }
  21.         else
  22.         { min0 = ""; }
  23.               if (heure < 10)
  24.               { heure0 = "0"; }
  25.               else
  26.               { heure0 = ""; }
  27.      
  28.   HeureActu = heure0 + heure + ":" + min0 + min + ":" + sec0 + sec ;
  29.   document.chrono.CurrentTime.value = HeureActu ;
  30.  
  31.   if ( heure >= heuregain )
  32.      { if ( minute >= minutegain )
  33.        { heuregain = heuregain + 1 ;
  34.          minutegain = minutegain + 24 } }
  35.   if ( minutegain >= 60 )
  36.      { minutegain = minutegain - 60 ;
  37.        heuregain = heuregain + 1 }
  38.   if ( heuregain >= 24 )
  39.      { heuregain = heuregain - 24 }
  40.   TempsGain = heuregain + ":" + minutegain + ":" + secondegain ;
  41.   document.chrono.GainTime.value = TempsGain ;
  42.  
  43.   if ( minuterestant < 0 )
  44.      { minuterestant = minuterestant + 60 ;
  45.        heurerestant = heurerestant - 1 } }
  46.  
  47.   TempsGain = heuregain + ":" + minutegain + ":" + secondegain ;
  48.   document.chrono.GainTime.value = TempsGain ;
  49.  
  50. </script>
  51. </head>
  52. <body onLoad="HeureCheck();">
  53. <form name="chrono">
  54. <input type="text" name="CurrentTime" size=5 readonly="1"> Heure actuelle <br /><br />
  55. <input type="text" name="GainTime" size=5 readonly="1"> Heure du prochain gain <br /><br />
  56. <input type="text" name="GainTimeLeft" size=5 readonly="1"> Temps restant
  57. </form>
  58. </body>
  59. </html>


Message édité par HolySpirit le 16-06-2006 à 01:40:56
mood
Publicité
Posté le 16-06-2006 à 00:05:31  profilanswer
 

n°1388589
anordem
Posté le 16-06-2006 à 01:18:24  profilanswer
 

Salut!
 
Il y a plusieurs problèmes dans ton script:
 
- Tu déclares la variable "min" et "sec" mais tu utilises "minute" et "seconde"
- Le "Have OK" n'a rien à faire là :  { sec0 = "0"; }have Ok
- Il manque un paquet de ";"
 
Il est préférable de ne pas utiliser des noms de fonction comme nom de variable (comme min ou time)
 
Et si tu veux une solution à ton problème, il faudrait déjà que tu l'exposes!  
Parce que : <<A prioris ca parait simple, mais quelque chose déconne, et je ne vois pas quoi.>>
Ben moi non plus! :)
 
Sinon, tu n'affectes nulle part la valeur du champ "GainTimeLeft" et si tu veux un compte à rebours, il faudrait appeler la fonction à intervalle régulier...

n°1388591
HolySpirit
Posté le 16-06-2006 à 01:44:09  profilanswer
 

Alors, j'ai édité le code en corrigeant les erreurs que tu m'as indiqué.
 
Par contre, je ne vois pas où il manque des ";" ?
J'en ai mis après chaque instructions, sauf la dernière du programme, et a priori je n'ai pas besoin d'en mettre après une boucle if, si ?
 
J'ai rajouté l'affection de "GainTimeLeft" (j'avais oublié de la remettre après l'avoir retiré un moment)
 
Et désolé si je n'ai pas été assez précis lors de mon 1er post !
En fait, je n'arrive pas a affecter les valeurs aux inputs du formulaire. Ceux-ci restent désespérément vide, et je ne sais pas pourquoi =/

n°1388639
gatsu35
Blablaté par Harko
Posté le 16-06-2006 à 09:25:29  profilanswer
 

tu utiliserai l'objet date tu t'emmerderai largement moins, en plus ton script ne gère absolument pas les jours :o et donc c'est foireux :o
Et pourquoi s'emmerder comme tu le fais alors qu'avec date ça marche comme sur des roulettes : (codé en 1h) (ouais je sais c'est beaucoup mais j'étais tombé sur une erreur de débutant) :(

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <title></title>
  5. <script>
  6. var eventTime = initDate(2006,6,25,16,40,35);
  7. /*initialise une nouvelle date*/
  8. function initDate(annee, mois, jour, heure, secondes, minutes) {
  9.  var newDate = new Date();
  10.  newDate.setYear(annee);
  11.  newDate.setMonth(mois);
  12.  newDate.setDate(jour);
  13.  newDate.setHours(heure);
  14.  newDate.setSeconds(secondes);
  15.  newDate.setMinutes(minutes);
  16.  return newDate;
  17. }
  18. /*ecrit une date dans un elt*/
  19. function writeTime(eltId, time, allhours) {
  20.  var elt = document.getElementById(eltId);
  21.  if (allhours) {
  22.   var h=time.getDate()*24+time.getHours();
  23.  } else {
  24.   var h=time.getHours();
  25.  }
  26.  var m=time.getMinutes();
  27.  var s=time.getSeconds();
  28.  elt.value = ((h<10) ? "0"+h : h) + ":" + ((m<10) ? "0"+m : m) + ":" + ((s<10) ? "0"+s : s);
  29. }
  30. /*Fonction qui s'occupe de gerer le decompte*/
  31. function updateTime() {
  32.  var time = new Date();
  33.  var restTime = new Date(eventTime-time);
  34.  restTime.setSeconds(restTime.getSeconds()+Math.round(restTime.getMilliseconds()/1000)); //on arrondis les secondes afin de ne pas avoir de decalage de temps.
  35.  writeTime("actualTime",time);
  36.  writeTime("restTime",restTime,true);
  37.  writeTime("eventTime",eventTime);
  38.  setTimeout("updateTime()",1000);
  39. }
  40. window.onload=updateTime;
  41. </script>
  42. </head>
  43. <body>
  44. <label>Heure Actuelle : </label><input type="text" id="actualTime"><br>
  45. <label>Temps restant : </label><input type="text" id="restTime"><br>
  46. <label>Prochain &eacute;v&egrave;nement : </label><input type="text" id="eventTime"><br>
  47. </body>
  48. </html>


Message édité par gatsu35 le 16-06-2006 à 09:36:48
n°1388957
HolySpirit
Posté le 16-06-2006 à 13:31:39  profilanswer
 

Je m'attendais plus à une correction de mon script qu'un script tout fait  :D  
 
En tout cas merci, par contre, je ne comprends pas quel est l'interêt d'utiliser le window.onload=updateTime; plutot que le <body onLoad=".....">
 
et pourquoi il faut mettre :
 

Code :
  1. window.onload=updateTime;


et non :
 

Code :
  1. window.onload=updateTime();

n°1389043
gatsu35
Blablaté par Harko
Posté le 16-06-2006 à 14:48:16  profilanswer
 

c'est au choix, soit tu appelles la fonction dans le body onload soit en modifiant le window.onload (ce qui est plus propre).
 
Quand tu me mets pas de guillemets, tu passes entièrement l'objet updateTime dans le window.onload. c'est comme si tu faisais un copier-coller du contenu de updateTime dans window.onload.
Si tu mets des parenthèse ça ne représente rien du tout et ça ne lancera pas la fonction.

n°1389320
HolySpirit
Posté le 16-06-2006 à 17:54:58  profilanswer
 

D'accord merci pour les réponses ( par contre ton script semble déconner au niveau des heures. Si je met un evenement à venir dans la minute, j'ai un compte à rebours de plus de 700heures ^^

n°1389352
gatsu35
Blablaté par Harko
Posté le 16-06-2006 à 19:39:35  profilanswer
 

ouais jvais corriger ça de retour chez moi.
 
C'est parce que lors de la soustraction je récupere un objet Date, et ça le fait pas du tout :(  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [JavaScript] Compte et Decompte

 

Sujets relatifs
pb recup tableau php en javascript[Javascript / DOM (?)] Renommer un element de formulaire
[RESOLU] liaison javascript / PHP[javascript] Interpreter les balises html
[JAVASCRIPT] Un pied de page qui ne marche pas...Liens et javascript
[JavaScript] Rechercher dans une boite a listeUn compte à rebours avec ouverture sur un lien
[Javascript] Créer un evenement "ondblclick" dans un SELECT[JavaScript] Récupérer une variable serveur
Plus de sujets relatifs à : [JavaScript] Compte et Decompte


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR