【问题标题】:How to keep track of attempts in a JavaScript number guessing game?如何跟踪 JavaScript 猜数字游戏中的尝试?
【发布时间】:2021-05-27 03:11:24
【问题描述】:

我正在尝试跟踪进行了多少次猜测,然后在猜到正确数字时打印该数字。当猜错数时,猜数不会更新,所以它一直显示只猜了 1 次,而实际上猜了更多。

let num = Math.floor(Math.random() * 20) + 1;

console.log(num);

let num_guess = 0

function do_guess() {
    let guess = Number(document.getElementById("guess").value);
    let num_guess = 1

    let message = document.getElementById("message");

    if (isNaN(guess)) {
        message.innerHTML = 'That is not a number!';
    }
    else if (guess > 20) {
        message.innerHTML = 'That number is not in range, try again.'
        num_guess+=;
    }
    else if (guess > num) {
        message.innerHTML = "No, try a lower number."
        num_guess+=;
    }
    else if (guess < num) {
        message.innerHTML = "No, try a higher number."
        num_guess+=;
    }
    else if (guess == num) {
        message.innerHTML = "You got it! It took you " + num_guess + " tries.";
    }
}

<head>
    <title>Higher - Lower</title>
</head>
<body>
    <div class="container">
        <h1>Higher Lower</h1>
        <p>Guess a number between 1 and a maximum number of your choosing!</p>
        <div class="row">
            <div class="col-lg-3 col-md-6">
                <form>
                    <div class="form-group">
                        <label>Your guess:</label>
                        <input type="text" id="guess" class="form-control">
                    </div>
                    <button type="button" class="btn btn-primary" onclick="do_guess()">Guess</button>
                </form>
            </div>
        </div>
        <p id="message"></p>
    </div>
    <script src="higherlower.js"></script>
</body>
```

【问题讨论】:

  • 您已经创建了两次变量 num_guess。如果您希望它是全局的并且不限于函数,请从 do_guess 函数中删除 let num_guess = 1。
  • 看起来在 do_guess() 的第二行中,您每次猜测都将“num_guess”重置为 1。您可能希望删除该行并确保每次进行猜测时都会调用 do_guess
  • 你在范围内重新定义变量,所以每次函数触发时,它都会重置为 1。

标签: javascript html innerhtml


【解决方案1】:

let num_guess = 1 您将变量声明两次,每次调用该函数时,它将被设置为 1。

num_guess+=; 这不会增加变量。见下文。

let num = Math.floor(Math.random() * 20) + 1;

console.log(num);

let num_guess = 0;

function do_guess() {
    let guess = Number(document.getElementById("guess").value);

    let message = document.getElementById("message");

    if (isNaN(guess)) {
        message.innerHTML = 'That is not a number!';
    }
    else if (guess > 20) {
        message.innerHTML = 'That number is not in range, try again.'
        num_guess += 1;
    }
    else if (guess > num) {
        message.innerHTML = "No, try a lower number."
        num_guess += 1;
    }
    else if (guess < num) {
        message.innerHTML = "No, try a higher number."
        num_guess += 1;
    }
    else if (guess == num) {
        message.innerHTML = "You got it! It took you " + num_guess + " tries.";
    }
}

【讨论】:

  • 谢谢!我已经盯着它看了一段时间,但完全错过了我在函数上方声明变量的地方。
  • 我刚刚更改了答案。希望对您有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 2018-09-21
  • 2019-02-07
  • 2016-02-01
相关资源
最近更新 更多