Partage
  • Partager sur Facebook
  • Partager sur Twitter

besion d'aide pour fonction

    25 octobre 2008 à 14:22:00

    bonjours,

    je voudrait faire une fonction qui augmenterai un nombre quand l'on reste appuyer sur un bouton.

    exemple : je reste appuyer sur mon bouton , mon nombre augmente et quand je relâche l'incrementation s'arrête,

    j'ai pensé a une boucle for mais je vois pas quant il faut l'arrêter

    merci
    • Partager sur Facebook
    • Partager sur Twitter
      25 octobre 2008 à 15:20:46

      Pour savoir quand arrêter ta boucle, utilise une variable externe à ta fonction :
      var loop = 0;
      function increase(start, stop){
      	loop = (start ? 1 : (stop ? 0 : loop)); //Si start existe, on démarre la boucle, si stop existe, on l'arrête
      	if(loop){
      		number = parseInt(document.getElementById('number').value)+1;
      		document.getElementById('number').value = number;
      		setTimeout('increase()', 100);
      	}
      }
      


      Et le code HTML qui va avec :
      <input type="text" id="number" value="0" style="width: 30px;" readonly/>
      <input type="button" value="+" onMouseDown="increase(1);" onMouseUp="increase(0, 1);" />
      

      Tu noteras le readonly : cela empêche l'utilisateur d'entrer quelque chose dans le champ de texte et évite ainsi qu'il s'y trouve autre chose qu'un nombre (ce qui ferait buguer la fonction javascript puisque la value récupérée ne serait alors plus un nombre et parseInt(document.getElementById('number').value) retournerait "NaN" (Not a Number).
      • Partager sur Facebook
      • Partager sur Twitter
        25 octobre 2008 à 16:20:35

        Citation : Elias

        Tu noteras le readonly : cela empêche l'utilisateur d'entrer quelque chose dans le champ de texte et évite ainsi qu'il s'y trouve autre chose qu'un nombre (ce qui ferait buguer la fonction javascript puisque la value récupérée ne serait alors plus un nombre et parseInt(document.getElementById('number').value) retournerait "NaN" (Not a Number).


        Je prefere utiliser le disabled, me semble plus correct :
        <input type="text" id="number" value="0" style="width: 30px;" disabled="disabled" />
        <input type="button" value="+" onMouseDown="increase(1);" onMouseUp="increase(0, 1);" />
        


        De plus, tu as oublié de lui préciser que setTimeout('increase()', 100);
        fesait incrémenter le nombre toutes les 100millisecondes, donc s'il veut modifier la rapidité, c'est la qu'il doit changer ;) .
        • Partager sur Facebook
        • Partager sur Twitter
          25 octobre 2008 à 16:37:10

          Le readonly a l'avantage de ne pas changer le style de l'input, alors que les input en disabled sont grisés par défaut sur Firefox.
          Mais hormis cela, c'est absolument égal dans son cas. La différence devient importante lorsque le formulaire est soumis et traité, puisque les champs en readonly sont tout de même envoyés en POST alors que les camps disabled ne sont pas envoyés.
          On peut aussi note qu'il est inutile de donner une valeur à ces deux attributs (disabled ou readonly).
          • Partager sur Facebook
          • Partager sur Twitter

          besion d'aide pour fonction

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown