【问题标题】:What can I do to resolve this error code isssue?我该怎么做才能解决此错误代码问题?
【发布时间】:2022-11-24 14:53:27
【问题描述】:

使用 prompt() 方法询问用户最大数量应该是多少。提示应该在一个带有验证的循环中,如本课程之前演示的那样,确保输入的值是正数。如果用户输入小数,只需四舍五入即可。

输入有效数字后,更改指令内容以指定在 1 和 N 之间的猜测。

当用户按下猜测按钮时,验证输入:

如果猜测不是数字,则显示一条消息:“那不是数字!” 如果猜测超出范围(1 到 N),则显示一条消息:“该数字不在范围内,请重试。” 使用数组,跟踪用户的每个猜测。当用户猜对赢得游戏时,将猜中次数和猜中列表添加到胜利消息中。例如:

“你猜对了!你试了 5 次,你的猜测是 3、14、7、9、5”

不要计算无效的猜测(不是数字或超出范围)。

由于您正在跟踪猜测,因此添加验证以检查是否已经猜到一个数字。如果有,则显示一条消息,不要将其视为猜测。

HTML 文件:

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">

        <title>Higher - Lower</title>

    </head>
    <body>
      <div class="container">
            <h1>Higher Lower</h1>
            <p>Guess a number between 1 and <span class="max-number">N</span></p>
            <div class="row">
                <div class="col-lg-3 cold-md-6">
                    <form>
                        <div class="form-group">
                            <label>Your guess:</label>
                            <input type="text" id="userInput" 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="HigherLowerEnhanced.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
        <script src="https://cdnjs.cloudfare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
    </body>
 </html>

JavaScript 文件:

let maxNumber;

// use an infinite loop that continues until a users input is validated
while (true) {

    maxNumber = prompt("What should the maximum number be?");

        // check if the user input is actually a number
        if (isNaN(maxNumber)) {

            // keeps the loop going until input is validated
            continue;
        }
    
    // check if the number is a decimal
    if (!Number.isInteger(maxNumber)) {
        // function that rounds numbers
        maxNumber = Math.round(maxNumber);
    }
    

    if (maxNumber < 1) {
        console.log("Please Enter number more than 0");

        continue;
    }

    // function to set the spans value to the input number
    const maxNumberSpan = document.querySelector('.max-number');
    maxNumberSpan.innerHTML = maxNumber;

    break;
    }

// generate random number between 1 and infinite
let num = Math.floor(Math.random() * maxNumber) + 1;

// function stores users guesses
const inputArray = [];

document.querySelector('.btn').addEventListener("click", (e) => {

    // prevents page from refreshing after you click submit
    e.preventDefault(); 

    // call do_guess() function on click
    do_guess();
});

// do_guess function
function do_guess() { 

    // get message div
    let message = document.getElementById("message"); 

    // get input value
    let guess = Number(document.getElementById("guess").value); 

    // if input is not a number
    if (isNaN(guess)) { 
        message.innerHTML = "This is not a number"; 

    // return function (so that user can submit another number)
    return; 
}
    // if number is out of range
    if (guess < 1 || guess > maxNumber) { 

        // show this message
        message.innerHTML = "That number is not in range, try again"; 

        // return function
        return; 
    }

    // indexOf() function finds guess in inputArray
    if (inputArray.indexOf(guess) != -1) {

        // when the guessed number is not found in the array it will return -1
        message.innerHTML = "You already have tried this number";
        return;
    }

    // now we have checked validation of input push guessed number on array
    inputArray.push(guess); 

    // if input is equal to num
    if (guess == num) { 
        message.innerHTML = "You got it! It took you " + inputArray.length + " tries and your guesses were " + inputArray.toString();
        
    }

    // if guess is more
    else if (guess > num) { 
        message.innerHTML = "No, try a lower number.";
        
    }

    // if guessed number is less
    else { 
        message.innerHTML = "No, try a higher number.";
    }
}

错误:

[Running] node "/Users/tonyjones/Desktop/HigherLowerEnhanced/HigherLowerEnhanced.js"
/Users/tonyjones/Desktop/HigherLowerEnhanced/HigherLowerEnhanced.js:6
        maxNumber = prompt("What should the maximum number be?");
        ^

ReferenceError: prompt is not defined
    at Object.<anonymous> (/Users/tonyjones/Desktop/HigherLowerEnhanced/HigherLowerEnhanced.js:6:9)
    at Module._compile (node:internal/modules/cjs/loader:1159:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1213:10)
    at Module.load (node:internal/modules/cjs/loader:1037:32)
    at Module._load (node:internal/modules/cjs/loader:878:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:23:47

Node.js v18.12.1

[Done] exited with code=1 in 0.324 seconds

【问题讨论】:

  • 您在 Node.js 而不是浏览器中运行它。不要在 Node.js 中运行它并在浏览器中运行它,如果那是你真正想要的。

标签: javascript html node.js json prompt


【解决方案1】:
  • 您正在尝试使用prompt。 Node.js 不提供原生的 prompt 函数。网络浏览器可以。
  • 同上 document 对象。
  • 您有一个 HTML 文档。 Node.js 不以 HTML 文档为中心。网络浏览器可以。

在 Web 浏览器中而不是在 Node.js 中运行代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 2023-02-26
    • 1970-01-01
    • 2022-10-05
    • 2012-03-16
    相关资源
    最近更新 更多