Fonction SI dans du code HTML / Java Script

Bonjour tout le monde,

Je m'essaie depuis quelque temps à me faire des petit trucs rigolo et ces derniers temps, je suis sur la réalisation d'un compte à rebours, via javascript.

Là où j'ai un soucis c'est ayant intégré du texte dans mon compte à rebours (Jours, Minutes, etc ...), je voudrais que les fautes d'orthographes se corrigent automatiquement quand cela arrive à 1 jour, 1 heure, 1 seconde, et non pas 1 jourS, 1 heureS, etc ... enfin vous avez compris.

Je sais qu'il existe une fonction qui permet de faire cela, mais je n'arrive pas à l'intégrer correctement. Pourriez vous m'aider svp, et m'indiquez au passage si mon code est bon. Le corriger peut être ... ?

Merci d'avance.

Pour info, voici mon code source :

<html>
<head>
<script language="JavaScript">

var cible = new Date("April 17, 2010 19:30:00");

var mms_jour = 24 * 60 * 60 * 1000;
var mms_heure = 60 * 60 * 1000;
var mms_minute = 60 * 1000;
var mms_seconde = 1000;

function decompte() {

var aujourdhui = new Date();

var change_j = -1;
var change_h = -1;
var change_m = -1;

var diff_mms = cible.getTime() - aujourdhui.getTime();

diff_jours = Math.floor(diff_mms / mms_jour);
diff_mms -= diff_jours * mms_jour;

diff_heures = Math.floor(diff_mms / mms_heure);
diff_mms -= diff_heures * mms_heure;

diff_minutes = Math.floor(diff_mms / mms_minute);
diff_mms -= diff_minutes * mms_minute;

var diff_secondes = Math.floor(diff_mms / mms_seconde);

document.getElementById("jours").innerHTML = diff_jours;
document.getElementById("heures").innerHTML = diff_heures;
document.getElementById("minutes").innerHTML = diff_minutes;
document.getElementById("secondes").innerHTML = diff_secondes;

setTimeout("decompte()",1000);
}
</script>

</head>
<body onLoad="decompte()">
<form name="formulaire"><font face="arial" size="2"><b>

Il reste

<span id="jours">0</span> jours,
<span id="heures">0</span> heures,
<span id="minutes">0</span> minutes et
<span id="secondes">0</span> secondes

avant que le compte à rebours soit à zéro.

</form>
</body>
</html>


2 réponses

  1. Contributeur
    Bonjour,

    je te propose de modifier ton code de la façon suivante :

    1/ Déclarer des 'labels'

    var label_jours = (diff_jours == 1)? ' jour':' jours';  
    var label_heures = (diff_heures == 1)? ' heure' : ' heures';  
    var label_minutes = (diff_minutes == 1)? ' minute' : ' minutes';  
    var label_secondes = (diff_secondes == 1)? ' seconde' : ' secondes'; 


    2/ Rajouter chaque label au "bon" endroit.

    label_jour à diff_jour, label_heure à diff_heure, etc.

    document.getElementById("jours").innerHTML = diff_jours + label_jours; 


    3/ Supprimer les labels qui étaient en dur dans ton affichage. Tu obtiens ceci :

    <span id="jours">0</span>,  
    <span id="heures">0</span>,  
    <span id="minutes">0</span> et  
    <span id="secondes">0</span> 



    4/ Prier pour que ça marche sur ton navigateur.

    5/ Dire merci à ceux qui t'ont aidé si ça marche. :-)

    6/ Optimiser quand tu auras trouvé mieux.


    Bon courage.

    "La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information"
    Albert Einstein
    1. Bonjour, et merci à toi Giorgiolino.

      Tes codes marchent à merveille. Je me suis permis de faire une toute petite modif pour intégrer le 0 (ainsi que le 1) à la correction automatique.

      Au final ca donne un code comme cela, c'est sur c'est un peu " lourd", mais c'est pas destiné à du GRAND niveau, c'est juste pour moi qui m'amuse.

      Encore merci pour ton aide.

      <html>
      <head>
      <script language="JavaScript">

      var cible = new Date("April 18, 2010 08:30:00");

      var mms_jour = 24 * 60 * 60 * 1000;
      var mms_heure = 60 * 60 * 1000;
      var mms_minute = 60 * 1000;
      var mms_seconde = 1000;

      function decompte()

      {var aujourdhui = new Date();

      var change_j = -1;
      var change_h = -1;
      var change_m = -1;

      var diff_mms = cible.getTime() - aujourdhui.getTime();

      diff_jours = Math.floor(diff_mms / mms_jour);
      diff_mms -= diff_jours * mms_jour;

      diff_heures = Math.floor(diff_mms / mms_heure);
      diff_mms -= diff_heures * mms_heure;

      diff_minutes = Math.floor(diff_mms / mms_minute);
      diff_mms -= diff_minutes * mms_minute;

      var diff_secondes = Math.floor(diff_mms / mms_seconde);

      var label_jours = (diff_jours <= 1)? ' jour':' jours';
      var label_heures = (diff_heures <= 1)? ' heure' : ' heures';
      var label_minutes = (diff_minutes <= 1)? ' minute' : ' minutes';
      var label_secondes = (diff_secondes <= 1)? ' seconde' : ' secondes';


      document.getElementById("jours").innerHTML = diff_jours + label_jours;
      document.getElementById("heures").innerHTML = diff_heures + label_heures;
      document.getElementById("minutes").innerHTML = diff_minutes + label_minutes;
      document.getElementById("secondes").innerHTML = diff_secondes + label_secondes;

      setTimeout("decompte()",1000);}

      </script>

      </head>

      <body onLoad="decompte()">

      <form name="formulaire"><font face="French script MT" size="6">

      <p>Il ne reste plus que

      <span id="jours">0</span>,
      <span id="heures">0</span>,
      <span id="minutes">0</span> et
      <span id="secondes">0</span>

      avant que ce compte à rebours arrive à zéro.

      </form>

      </body>
      </html>