Fonction SI dans du code HTML / Java Script

Fermé
Toriki16 Messages postés 7 Date d'inscription jeudi 25 mars 2010 Statut Membre Dernière intervention 7 avril 2010 - 25 mars 2010 à 18:04
Toriki16 Messages postés 7 Date d'inscription jeudi 25 mars 2010 Statut Membre Dernière intervention 7 avril 2010 - 26 mars 2010 à 14:50
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>



A voir également:

2 réponses

Giorgiolino Messages postés 253 Date d'inscription vendredi 15 mai 2009 Statut Contributeur Dernière intervention 2 mars 2015 52
Modifié par Giorgiolino le 26/03/2010 à 10:24
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
Toriki16 Messages postés 7 Date d'inscription jeudi 25 mars 2010 Statut Membre Dernière intervention 7 avril 2010 1
Modifié par Toriki16 le 26/03/2010 à 14:55
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