Je veux utiliser un compte à rebours simple commençant à 30 secondes à partir du moment où la fonction est exécutée et se terminant à 0. Pas de millisecondes. Comment peut-il être codé?
147
Je veux utiliser un compte à rebours simple commençant à 30 secondes à partir du moment où la fonction est exécutée et se terminant à 0. Pas de millisecondes. Comment peut-il être codé?
var count=30;
var counter=setInterval(timer, 1000); //1000 will run it every 1 second
function timer()
{
count=count-1;
if (count <= 0)
{
clearInterval(counter);
//counter ended, do something here
return;
}
//Do code for showing the number of seconds here
}
Pour faire apparaître le code du minuteur dans un paragraphe (ou n'importe où ailleurs sur la page), il suffit de mettre la ligne:
<span id="timer"></span>
où vous voulez que les secondes apparaissent. Insérez ensuite la ligne suivante dans votre timer()
fonction, pour qu'elle ressemble à ceci:
function timer()
{
count=count-1;
if (count <= 0)
{
clearInterval(counter);
return;
}
document.getElementById("timer").innerHTML=count + " secs"; // watch for spelling
}
J'ai écrit ce script il y a quelque temps:
Usage:
la source
myCounter.stop();
Jusqu'à présent, les réponses semblent reposer sur le code exécuté instantanément. Si vous réglez une minuterie sur 1000 ms, elle sera en fait d'environ 1008 à la place.
Voici comment procéder:
Pour l'utiliser, appelez:
la source
En voici un autre si quelqu'un en a besoin pendant quelques minutes et secondes:
la source
setTimeout(Decrement, 1000)
c'est préférable. stackoverflow.com/questions/6232574/…la source
Math.floor
, pasMath.round
Je viens de modifier la réponse de @ ClickUpvote :
Vous pouvez utiliser IIFE (Immediately Invoked Function Expression) et la récursivité pour le rendre un peu plus facile:
Afficher l'extrait de code
la source
Si vous étendez la réponse acceptée, la mise en veille de votre machine, etc. peut retarder le fonctionnement de la minuterie. Vous pouvez obtenir un temps réel, au prix d'un peu de traitement. Cela donnera un vrai temps restant.
la source
Vous pouvez faire comme suit avec pur JS. Il vous suffit de fournir à la fonction le nombre de secondes et elle fera le reste.
la source
Sur la base de la solution présentée par @Layton Everson, j'ai développé un compteur comprenant les heures, les minutes et les secondes:
la source
la source
Ma solution fonctionne avec les formats de date et d'heure MySQL et fournit une fonction de rappel. sur complition. Avertissement: fonctionne uniquement avec les minutes et les secondes, car c'est ce dont j'avais besoin.
la source
Pour des raisons de performances, nous pouvons désormais utiliser en toute sécurité requestAnimationFrame pour une boucle rapide, au lieu de setInterval / setTimeout.
Lors de l'utilisation de setInterval / setTimeout, si une tâche de boucle prend plus de temps que l'intervalle, le navigateur étendra simplement la boucle d'intervalle, pour continuer le rendu complet. Cela crée des problèmes. Après quelques minutes de surcharge setInterval / setTimeout, cela peut geler l'onglet, le navigateur ou tout l'ordinateur.
Les appareils Internet ont un large éventail de performances, il est donc tout à fait impossible de coder en dur un intervalle de temps fixe en millisecondes!
À l'aide de l' objet Date , pour comparer la date de début et l'époque actuelle. Ceci est beaucoup plus rapide que tout le reste, le navigateur se chargera de tout, à un rythme régulier 60fps (1000/60 = 16.66ms par image ) - un quart d'un clin d'oeil - et si la tâche dans la boucle exige plus que , le navigateur supprimera quelques repeints.
Cela laisse une marge avant que nos yeux ne le remarquent ( Humain = 24FPS => 1000/24 = 41,66ms par image = animation fluide!)
https://caniuse.com/#search=requestAnimationFrame
la source