IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Aide pour un minuteur


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 61
    Points : 37
    Points
    37
    Par défaut Aide pour un minuteur
    Bonjour à tous et bonne année.
    Pour bien commencer celle-ci, rien de mieux qu'un petit assouplissement des neurones... ^^

    Je suis actuellement en train de réaliser un minuteur en javascript...
    J'appelle donc une fonction en lui passant le temps voulu, le pas, et le nom de la div ou afficher le compteur.... (valeurs en secondes)
    Imaginons que je veuille un temps de dix secondes, et un pas de un...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    minutTime(10, 1, 'minut');
    Le résultat à atteindre est celui-ci :
    10
    9
    8
    7
    6
    5
    4
    3
    2
    1
    'chaine vide'
    Comme vous pourrez le remarquer dans le code, lorsque le minuteur arrive au zéro il affiche un 'blanc' à la place du chiffre.

    Voici donc mon code actuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    	/* fonction de minutage */
    		function minutTime(time, pas, divName) {
    			var myDiv = document.getElementById(divName);
    			var i = time, j = 0;
     
    			function decompt() {
    				if (i == 0)
    					myDiv.innerHTML='';
    				else
    					myDiv.innerHTML=i;
    				i--;
    				setTimeout("decompt()", pas*1000);
    			}
    			if (i >= 0) 
    				decompt();
    		}
    Comme vous pouvez vous en douter, je fais appel à vous car ile ne marche pas, et que je dois faire une bête erreur que je ne voie désespérément pas.
    Merci d'avance à ceux qui pourront m'éclairer.

    PS : Etant donné que mon code est plus simpliste et ne produit pas tout à fait le même résultat que les divers comptes à rebours résolus sur le forum, je me permet de créer tout de même un nouveau fil.

    wILL

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    setInterval est plus approprié dans ce cas de figure... et un clearInterval en fin de minuterie ...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    Bonsoir SpaceFrog.

    J'avais lu que setIntervall posais des problèmes de compatibilité en comparaison avec setTimeout.
    Je vais essaye ce que tu me dit.... dans la même idée, toujours avec mes timeout, set et clear, j'ai fais cela en attendant une réponse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    		function minutTime(time, divName) {
    			count = time;
    			doTimer(divName);
     
    			function doTimer(divName) {
    				if (!timerStatut) {
    				  timerStatut = 1;
    				  timedCount();
    				}
    			}
     
    			function timedCount(divName) {
    				if (count == 0) {
    					document.getElementById(divName).innerHTML = '';
    					stopCount();
    				}
    				else {
    					document.getElementById(divName).innerHTML = count;
    					count--;
    					t = setTimeout("timedCount(divName)", 1000);
    				}
    			}
     
    			function stopCount() {
    				clearTimeout(t);
    				timerStatut = 0;
    			}
    		}
    Seulette voilà, je n'ai pas trouvé d'autres moyen pour faire fonctionner ce code de déclarer mes variables count, t et timerStatut de façon globale.

    De plus, mon code plante si je l'écrit comme ceci... ou disons plutôt que sa ne marche pas.

    Je suis convaincu que le problème vient du passage du nom de la div, via la variable divName....
    Pourtant je fais bien un appel correct :

    Merci d'avance

    wILL

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    Je reviens après ce que SpaceFrog m'a conseillé.
    Voici donc une seconde version de mon premier code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    		function minutTime(time, pas, divName) {
    			var myDiv = document.getElementById(divName);
    			var i = time;
                var t;
     
    			var setTimer = function() {
    				if (i == 0) {
    					myDiv.innerHTML='';
                        clearInterval(t);
    				}
    				else
    					myDiv.innerHTML=i;
    					i--;
    					t = setInterval("setTimer()", pas*1000);
    			}
    			setTimer();
    		}
    A mon avis, le problème vient de la place ou je déclare mes fonctions...
    Seulement je ne veut pas de variables globales, et le passage de paramètres ne semble pas marcher.

    Merci d'avance pour vos conseils.

    wILL

Discussions similaires

  1. Aide pour utiliser les minuteurs
    Par lukil dans le forum wxWidgets
    Réponses: 3
    Dernier message: 13/03/2012, 08h01
  2. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  3. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05
  4. Une petite aide pour les API ?
    Par Yop dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2002, 21h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo