Fonction SI dans du code HTML / Java Script

Toriki16 Messages postés 9 Statut Membre -  
Toriki16 Messages postés 9 Statut Membre -
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. Giorgiolino Messages postés 250 Date d'inscription   Statut Contributeur Dernière intervention   52
     
    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
  2. Toriki16 Messages postés 9 Statut Membre 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>
    0