2010-11-22 6 views
0

J'ai créé un compteur simple qui fonctionne dans la console (c.-à-d. Firebug), mais je ne sais pas comment régler les thresolds (heures = , minutes = 59, secondes = 59, millisecondes = 999). Aidez-moi, s'il vous plaît!Compteur de console

http://fiddle.jshell.net/Nyuszika7H/p4fdZ/

+1

heures devrait être '= 23' droite? (* not '= 59' *) –

+0

Je me suis finalement rendu à cette démo. Regarde. –

+0

@Gaby Oui, vous avez raison. Désolé, c'était tard dans la nuit. – nyuszika7h

Répondre

3

Vous devez utiliser le % modulus operator

console.log(h%24 + 'h ' + m%60 + 'm ' + s%60 + 's ' + ms%1000 + 'ms'); 

exemple: http://fiddle.jshell.net/p4fdZ/2/

L'opérateur de module renvoie le premier opérande modulo le second opérande, c'est-à-dire, var1 m odulo var2, dans l'instruction précédente , où var1 et var2 sont des variables. La fonction modulo est le reste entier de divisant var1 par var2. Par exemple, 12 % 5 renvoie 2. Le résultat aura le même signe que var1; c'est-à-dire que -1% 2 renvoie -1.

+0

+1 puisque modulo est techniquement la bonne façon d'implémenter le "seuil". –

+0

+1 Merci beaucoup! C'est très simple, je pensais que ce serait plus difficile (comme la réponse précédente). – nyuszika7h

6

Vous ne pouvez pas compter réellement sur votre setInterval() appel à exécuter chaque milliseconde. À cause de cela, vous êtes beaucoup mieux juste en utilisant Date.now() * pour obtenir la valeur millisecondes chaque fois que la fonction s'exécute. Cela résoudra également votre problème de "seuils".

om nom nom, demo →

En attendant, lisez How JavaScript Timers Work.


* ou new Date()

+0

+1 Cela fonctionne, mais ce n'est pas la meilleure façon de le faire. – nyuszika7h

+0

@Nyuszika: vrai, ce n'est pas aussi "facile" que la réponse que vous avez acceptée, mais c'est l'implémentation ** correcte ** et ** précise **. Mais vous ne pouvez vraiment pas compter sur le navigateur appelant vos fonctions aux intervalles précis que vous spécifiez - en particulier avec votre fonction d'incrément de 1 ms. Les navigateurs ont généralement des délais minimums. Voir https://developer.mozilla.org/en/DOM/window.setTimeout#Minimum_delay_and_timeout_nesting –

+0

Je sais, mais je fais ces devinettes pour moi-même, et ça marche très bien dans mon navigateur. Certes, je devrais tester mon HTML, CSS, JS sur tous les principaux navigateurs quand je vais faire une page web, mais c'est l'avenir. – nyuszika7h