Как сделать счетчик кликов для другой функции кнопки? - PullRequest
0 голосов
/ 02 ноября 2019

Я сделал функцию, которая проверяет, равен ли входной номер Math.random (). Я хочу сделать еще одну функцию, чтобы проверить, сколько раз была нажата кнопка, прежде чем пользователь получил правильный ответ.

function guess() {
  var x = document.getElementById('this').value;
  var y = Math.floor((Math.random() * 10));

  if (x == y) {
    alert("Nice");
  } //correct answer
  else if (x > y) {
    alert("Lower");
  } else {
    alert("Higher");
  }
}
<body>
  <input type="number" min=1 max=2 id="this">
  <button type="button" onclick="guess()">Check</button>
</body>

Я ожидаю увидеть количество попыток, которые сделал номер.

Ответы [ 3 ]

2 голосов
/ 02 ноября 2019

Принимая во внимание комментарий Ника Парсонса, я переместил искомый номер из функции. Счетчик также должен быть определен вне функции и увеличен на единицу при каждом вызове. Я также изменил ваш код, чтобы дать количество попыток, когда угадал правильно.

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");
  }
}
<body>
  <input type="number" min=1 max=10 id="this">
  <button type="button" onclick="guess()"> Check </button>
</body>

Также max в поле ввода чисел было неверным.

1 голос
/ 02 ноября 2019

Создайте глобальную переменную (скажем, counter), инициализированную до нуля, а затем увеличивайте ее при каждом нажатии кнопки:

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");
  }
}

Хотя вы не просили об этом, обратите внимание, что я поместилинициализация x и y извне функции обработчика события. Если вы поместите его внутрь, каждый раз, когда вы нажимаете кнопку, y будет иметь значение новое случайное число, что делает подсказки бесполезными (и я полагаю, что вы все равно этого не хотели делать).

0 голосов
/ 02 ноября 2019

Сначала необходимо объявить глобальную переменную для хранения счетчика кликов и каждый раз, когда пользователь пытается ошибиться, увеличивать переменную и, наконец, в случае успешной попытки, оповещать об этом.

...