Javascript猜谜游戏
我是javascript和html的新手,所以我希望有人能看看我的代码,告诉我为什么某些语法不起作用。在下面的代码中,我使用document.getElementById每次检索我想要使用的元素。我在gameTime()中将它们声明为局部变量,并在整个函数中使用它Javascript猜谜游戏,javascript,Javascript,我是javascript和html的新手,所以我希望有人能看看我的代码,告诉我为什么某些语法不起作用。在下面的代码中,我使用document.getElementById每次检索我想要使用的元素。我在gameTime()中将它们声明为局部变量,并在整个函数中使用它 var randNum = Math.floor( 100*Math.random() ) +1; var numGuesses = 0; function 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()事件也有帮助。再次感谢。干杯:)如果上面有助于解决您的问题,请将其标记为答案。