json 如何解决此错误代码问题?

nhaq1z21  于 2022-11-26  发布在  其他
关注(0)|答案(1)|浏览(146)

使用prompt()方法询问使用者最大值应该是多少。提示应该在一个循环中,并如本课程先前示范的验证,以确定输入的值是正数。如果使用者输入小数,只要将其四舍五入即可。
输入有效数字后,更改指令内容以指定介于1和N之间的猜测数。
当用户按下猜测按钮时,验证输入:
如果猜测值不是数字,则显示消息:“这不是一个数字!”如果猜测超出范围(1到N),则显示一条消息:“该数字不在范围内,请重试。”使用数组跟踪用户的每次猜测。当用户猜对了游戏获胜时,将猜测次数和猜测列表添加到获胜消息中。例如:
“猜对了,你试了五次,猜出了三、十四、七、九、五。”
不计算无效猜测数(不是数字或超出范围)。
由于您正在跟踪猜测次数,请添加验证以检查某个数字是否已被猜出。如果已被猜出,则显示一条消息,并且不将其计为猜测。
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
l7wslrjt

l7wslrjt1#

  • 您正在尝试使用prompt。Node.js不提供本机prompt函数。Web浏览器提供。
  • document对象也是如此。
  • 您有一个HTML文档。Node.js并不以HTML文档为中心,而是以Web浏览器为中心。

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

相关问题