Tiens, vous revoilà ?
Je savais que vous seriez curieux. Je vais vous apprendre ici comment faire ce compte à rebours avec le langage
JavaScript. Ce langage s'exécute du côté utilisateur, ce qui va nous permettre de voir le temps défiler. Néanmoins, je déconseille à tous ceux ne s'y connaissant pas de s'aventurer par ici. Car le copier / coller sans rien comprendre,
ça n'avance à rien !
Compétences requises :
Bon, eh bien allons-y !
Tout d'abord, nous allons préparer le « terrain » avec cette portion de code (x)HTML, qu'il faudra placer en haut du script :
Code : HTML | <body>
<p id="affichage"></p>
</body>
|
Fait ? Poursuivons !
Nous allons commencer par déclarer notre fonction
CompteARebours().
Code : JavaScript | function CompteARebours()
{
// Notre script ici
}
|
Une fonction ? Mais on n'en avait pas besoin en
PHP !
Effectivement, mais nous avons besoin de placer notre script dans une fonction pour ensuite faire appel à une autre fonction nommée «
setInterval() », qui rappellera la fonction toutes les x millisecondes, et donc qui actualisera le temps restant.
Ensuite, vous verrez, rien de compliqué. En fait, nous allons poursuivre les mêmes étapes qu'en PHP : c'est-à-dire que nous allons d'abord déclarer les deux
« timestamps » (pour parler PHP

), et ensuite la condition qui permet le compte à rebours jusqu'à Noël
prochain :
Code : JavaScript 1
2
3
4
5
6
7
8
9
10
11
12 | function CompteARebours()
{
var date_actuelle = new Date(); // On déclare la date d'aujourd'hui.
var annee = date_actuelle.getFullYear();
var noel = new Date(annee, 11, 25, 8, 0, 0); // On déclare la date de Noël.
if (noel.getTime() < date_actuelle.getTime()) // Si Noël est dépassé, on passe au Noël suivant !
noel = new Date(++annee, 11, 25, 8, 0, 0); // On re-déclare Noël pour qu'il ne soit pas passé.
// Reste du script.
}
|
Remarquez que dans l'argument du mois, j'ai tapé
« 11 ». Il faut tout simplement tenir compte du fait que les mois commencent à partir de
0 (tiens, comme vous, bizarre hein ?
), donc
janvier sera égal à 0, et
décembre à 11. C'est à l'origine de pas mal d'erreurs, et de casse-tête.
Maintenant, rien de plus simple, nous allons recopier bêtement la soustraction des deux timestamps ainsi que les conversions. Pour arrondir, nous allons utiliser
Math.floor(). Bien sur, sans oublier qu'en JavaScript les timestamps sont exprimés en
millisecondes, une division pour obtenir des secondes s'impose donc :
Code : JavaScript 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | var tps_restant = noel.getTime() - date_actuelle.getTime(); // Temps restant en millisecondes
//============ CONVERSIONS
var s_restantes = tps_restant / 1000; // On convertit en secondes
var i_restantes = s_restantes / 60;
var H_restantes = i_restantes / 60;
var d_restants = H_restantes / 24;
s_restantes = Math.floor(s_restantes % 60); // Secondes restantes
i_restantes = Math.floor(i_restantes % 60); // Minutes restantes
H_restantes = Math.floor(H_restantes % 24); // Heures restantes
d_restants = Math.floor(d_restants); // Jours restants
//==================
|
Nous voici presque à la fin : nous allons afficher les résultats.

Pour afficher le mois en français, nous allons utiliser la bonne vieille méthode du tableau contenant les mois. Ensuite, rien de plus facile que d'afficher le texte avec
document.getElementById("affichage").innerHTML :
Code : JavaScript | var mois_fr = new Array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
var texte = "Nous sommes le <strong>" +date_actuelle.getDate()+ " " +mois_fr[date_actuelle.getMonth()]+ " " +date_actuelle.getFullYear()+ "</strong>," +
" et il est <strong>" +date_actuelle.getHours()+ "h" +date_actuelle.getMinutes()+ "</strong>.<br />";
texte += "Il reste exactement <strong>" +d_restants+ " jours</strong>, <strong>" +H_restantes+ " heures</strong>," +
" <strong>" +i_restantes+ " minutes</strong> et <strong>" +s_restantes+ "s</strong> avant d'ouvrir les cadeaux <:o).";
document.getElementById("affichage").innerHTML = texte;
|
Pour finir, nous allons faire en sorte de rappeler la fonction toutes les secondes, pour qu'elle se mette à jour, avec
setInterval(fonction, millisecondes) (Sans oublier de fermer la fonction avant !) :
Code : JavaScript | }
setInterval(CompteARebours, 1000); // Rappel de la fonction toutes les 1000 millisecondes (toutes les secondes quoi !).
|
Et voilà le travail ! Vous devriez obtenir
ce résultat. Encore une fois, il est possible d'améliorer ce script pour qu'il rende mieux. Moi, par exemple, j'ai affiché les dixièmes de secondes après la virgule, ça rend sympa en JavaScript ! En plus, vous connaissez déjà le principe, c'est pas bien dur.
Notez que si vous souhaitez afficher les dixièmes de secondes, n'oubliez pas de diminuer le délai de la fonction setInterval à 100.
Attention, le script en JavaScript calcule le temps restant à partir de l'heure du visiteur, contrairement au script PHP, qui affiche en fonction du serveur !