Страница не загружается, когда я устанавливаю переменную в 0 в Javascript - PullRequest
0 голосов
/ 14 апреля 2020

var randomNumber = Math.floor(Math.random() * 6);
    var attempts = 0 
    var maximum = 3
    
    while (attempts < maximum){
        document.getElementById("submit").onclick = function() { 
            attempts += 1;
                if (document.getElementById("input").value == randomNumber) {
                    alert("You chose the right number");
                } else {
                    alert("WRONG Number! You have " + attempts + " attempts.");
            }
        }
    }
<input type="text" id="input">
 <button id="submit">Submit</button>

, изучая, как использовать генератор случайных чисел, я хотел добавить время l oop и дать 3 попытки выбрать случайное число. Когда я создаю переменную для установки количества попыток, если я устанавливаю переменную равной 0, моя страница не загружается, но если я оставляю переменную пустой без значения, скрипт не запускается.

Есть идеи, почему это может происходить?

var randomNumber = Math.floor(Math.random() * 6);
    var x = 0
    var maximum = 3
    
    while (x < maximum){
        document.getElementById("submit").onclick = function() { 
            attempts += 1;
                if (document.getElementById("input").value == randomNumber) {
                    alert("You chose the right number");
                } else {
                    alert("WRONG Number! You have " + attempts + " attempts.");
            }
        }
    }
  <input type="text" id="input">
  <button id="submit">Submit</button>

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Вы можете отключить кнопку после достижения максимального количества попыток, например:

var randomNumber = Math.floor(Math.random() * 6);
var attempts = 0;
var maximum = 3;

document.getElementById("submit").onclick = function(e) {
  attempts += 1;
  if (document.getElementById("input").value == randomNumber) {
    alert("You chose the right number");
  } else {
    alert("WRONG Number! You have " + attempts + " attempts.");
  }
  if (attempts === maximum) e.target.disabled = true;
};
<input type="text" id="input" />
<button id="submit">Submit</button>
0 голосов
/ 14 апреля 2020

Ваш while l oop работает синхронно, во время загрузки страницы. Скрипт никогда не завершается, потому что условие while l oop никогда не отменяется, поэтому элемент управления никогда не возвращается браузеру для перерисовки страницы, поэтому у пользователя никогда не будет возможности ввести число или нажать на button.

Хотя вы можете продолжать использовать while, обещая onclick и await обещая, было бы лучше создать обработчик снаружи, один раз и иметь it проверьте, не превышены ли попытки.

Вам также необходимо использовать согласованные имена переменных: либо используйте x или attempts, но не оба:

var randomNumber = Math.floor(Math.random() * 6);
var attempts = 0
var maximum = 3

document.getElementById("submit").onclick = function() {
  if (attempts >= maximum) return;
  attempts += 1;
  if (document.getElementById("input").value == randomNumber) {
    alert("You chose the right number");
  } else {
    alert("WRONG Number! You have " + attempts + " attempts.");
  }
}
<input type="text" id="input">
<button id="submit">Submit</button>
...