Fonction SI dans du code HTML / Java Script
Toriki16
Messages postés
9
Statut
Membre
-
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>
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
-
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 -
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>