Javascript猜谜游戏

Javascript猜谜游戏,javascript,Javascript,我是javascript和html的新手,所以我希望有人能看看我的代码,告诉我为什么某些语法不起作用。在下面的代码中,我使用document.getElementById每次检索我想要使用的元素。我在gameTime()中将它们声明为局部变量,并在整个函数中使用它 var randNum = Math.floor( 100*Math.random() ) +1; var numGuesses = 0; function gameTime() {

我是javascript和html的新手,所以我希望有人能看看我的代码,告诉我为什么某些语法不起作用。在下面的代码中,我使用document.getElementById每次检索我想要使用的元素。我在gameTime()中将它们声明为局部变量,并在整个函数中使用它

    var randNum = Math.floor( 100*Math.random() ) +1;
    var numGuesses = 0;

    function gameTime()
    {   
        var guess = document.getElementById("guess").value;
        var status = document.getElementById("status"); 

        numGuesses++;

        if(guess == "")
        {
            alert("You did not guess a number!")
            numGuesses--;
        }
        else if(guess == randNum)
            status.value += (guess + " was the right number! It only took you " + numGuesses + " tries" + "\r")
        else if(guess > randNum)
            status.value += (guess + " is too high!" + "\r")
        else    
            status.value += (guess + " is too low!" + "\r")

        document.getElementById("guess").value = "";
    }

    function reset()
    {
        randNum = Math.floor( 100*Math.random() ) +1;
        numGuesses = 0;
        document.getElementById("guess").value = "";
        document.getElementById("status").value = "";
    }

    function quit()
    {
        document.getElementById("status").value += ("The correct number was " + randNum + "!\r")
    }
然后我尝试全局声明这两个元素,并在每个似乎根本不起作用的函数中使用它,我只是不明白为什么

    var randNum = Math.floor( 100*Math.random() ) +1;
    var numGuesses = 0;
    var guess = document.getElementById("guess").value;
    var status = document.getElementById("status");

    function gameTime()
    {   
        numGuesses++;

        if(guess == "")
        {
            alert("You did not guess a number!")
            numGuesses--;
        }
        else if(guess == randNum)
            status.value += (guess + " was the right number! It only took you " + numGuesses + " tries" + "\r")
        else if(guess > randNum)
            status.value += (guess + " is too high!" + "\r")
        else    
            status.value += (guess + " is too low!" + "\r")

        guess.value = "";
    }

    function reset()
    {
        randNum = Math.floor( 100*Math.random() ) +1;
        numGuesses = 0;
        guess.value = "";
        status.value = "";
    }

    function quit()
    {
        status.value += ("The correct number was " + randNum + "!\r")
    }
下面是这些js文件附带的html文件guess.js是第一个代码块,guess.js是第二个代码块

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>Guessing Game</title>
            <script type="text/javascript" src="guessAgain.js"></script>
        </head>
        <body>
            <label for = "guess"> Your Guess: </label>
            <input type = "text" id = "guess" value = "" />    
            <input type = "button" onclick = "gameTime()" value = "Submit" />  
            <input type = "button" onclick = "reset()" value = "New Game" />
            <input type = "button" onclick = "quit()" value = "Quit" />
            <br>    
            <textarea id = "status" rows = "10" cols = "52"></textarea>  
        </body> 
    </html>

猜谜游戏
你的猜测是:


谢谢您能给我提供的任何见解。

您正在将guess设置为element.value

应该是

var guess = document.getElementById("guess");
问题是您在此处使用
guess
作为元素:

guess.value = "";
您还需要将使用
guess
作为字符串的位置修改为
guess.value

第1期: 在主体加载之前调用以下命令,因此,它们返回undefined

var guess = document.getElementById("guess");
var status = document.getElementById("status");
只有在主体加载到
onload()
事件后,才能执行这些操作

第二期:

此外,当您将值本身指定给变量时,它不会像文本框那样更新
var guess=document.getElementById(“guess”).value
,则如果更改文本框,
guess
的值不会得到更新

如果您引用
var guess=document.getElementById(“guess”)
,则重复调用
guess.value
将返回输入字段的最新值


不必要的复杂的并不是错误的

        numGuesses++;   
        if(guess.value == "")
        {
            alert("You did not guess a number!")
            numGuesses--;
        }
        ...

相反,一旦它被认为是一个有效的猜测,即在最后,您可以增加numguesss。

如果是这种情况,则需要进行另一次修改,以考虑“guess”不再是一个值,而是一个元素,因此if条件应为“if(guess.value==”)等等。你可以考虑提供这样一种方法,这样人们就可以尝试上面的代码/程序。在你的帮助下,我把它弄清楚了。今天早上醒来,我想到了我给var guess和var status的任务,意识到了为什么它不起作用。onload()事件也有帮助。再次感谢。干杯:)如果上面有助于解决您的问题,请将其标记为答案。