0
votes

Comment créer un compteur de clics pour une autre fonction de bouton?

J'ai fait une fonction qui vérifie si un numéro d'entrée est égal à math.random (). Je veux faire une autre fonction pour vérifier combien de fois le bouton a été cliqué avant que l'utilisateur ait eu la bonne réponse.

p>

<body>
  <input type="number" min=1 max=2 id="this">
  <button type="button" onclick="guess()">Check</button>
</body>


1 commentaires

Vous rendez-vous compte que vous générez un nouveau nombre aléatoire chaque fois que l'utilisateur clique sur le bouton? Donc les indices que popup sont inutiles


3 Réponses :


1
votes

Créez une variable globale (par exemple, compteur ) initialisée à zéro, puis incrémentez-la chaque fois que vous cliquez sur le bouton:

var counter = 0;

var y = Math.floor((Math.random() * 10));

function guess() {
  var x = document.getElementById('this').value;
  counter += 1;
  if (x == y) {
    alert("Nice. You've guessed it in " + counter + " tries.");
    counter = 0;
  } //correct answer
  else if (x > y) {
    alert("Lower");
  } else {
    alert("Higher");
  }
}

Bien que vous n'ayez pas demandé pour cela, notez que j'ai placé l'initialisation de x et y depuis l'extérieur de la fonction de gestionnaire d'événements. Si vous le mettez à l'intérieur, chaque fois que vous cliquez sur le bouton, y sera défini sur un nouveau nombre aléatoire, ce qui rend les indices inutiles (et j'en déduis que vous ne l'avez pas voulez le faire quand même).


1 commentaires

D'accord avec le y mais x doit être à l'intérieur sinon la supposition ne se met pas à jour.



0
votes

Vous devez d'abord déclarer une variable globale pour stocker le compteur de clics et chaque fois que cet utilisateur essaie incorrect, augmentez la variable et enfin en cas de succès, essayez puis alertez-la.


0 commentaires

2
votes

En tenant compte du commentaire de Nick Parsons, j'ai déplacé le numéro recherché hors de la fonction. Le compteur doit également être défini en dehors de la fonction et incrémenté de un à chaque appel. J'ai également modifié votre code pour indiquer le nombre de tentatives lorsque deviné correctement.

<body>
  <input type="number" min=1 max=10 id="this">
  <button type="button" onclick="guess()"> Check </button>
</body>
var y = Math.floor((Math.random() * 10));
var counter = 0;

function guess() {
  var x = document.getElementById('this').value;
  counter += 1;
  
  if (x == y) {
    alert(`Nice. Took you ${counter} attempts`);
  } //correct answer
  else if (x > y) {
    alert("Lower");
  } else {
    alert("Higher");
  }
}

De plus, le max sur le champ de saisie numérique n'était pas correct.


0 commentaires