我正在制作一个刽子手游戏,我记下了逻辑,但它不起作用,当我检查它时,它说是未定义的touppercase



AS您可以看到我只使用html和javascript制作了一个简单的刽子手游戏。。。我记下了逻辑,但似乎总体上不起作用。我检查了这个元素,看看它对Uppercase说了什么不对。

我是一个新手程序员,所以一定要给我一些关于如何修复这个问题的指针,也要给我任何其他错误的指针

var keywords=["Apple","Banana","Variety"];
var score=0, fails=0, actualword="", guessword;

function startGame()
{

var num = Math.floor(keywords);
actualword = keywords[num];
actualword = actualword.toUpperCase();

for ( i = 0; i < actualword.length; i++)
{
guessword += "*";
}
document.getElementById("hangman").value = guessword;
document.getElementById("msg").value = "A word has already been selected, click button below to play game.";
document.getElementById("score").value = score;
document.getElementById("fails").value = fails;
}
function find(x)
{
var found = false;
for ( i =0; i < actualword.length; i++)
{
if(actualword.charAt(i) == x)
{
guessword = setCharAt(guessword, i, x);
found=true;
}
}
if(found)
{
if( guessword == actualword)
{
alert("Well done!");
score++;
document.getElementById("msg").value = "Click 'Start' button to select the next keyword";

}
}
document.getElementById("hangman").value = guessword;
document.getElementById("score").value =  score;
document.getElementById("fails").value = fails;
}

function setCharAt(str,index,chr)
{
return str.substr(0,index) + chr + str.substr(index+1);
}
<!doctype html>
<html>
<head>
<title>HangMan Game - Javascript</title>
<script>
</script>  
</head>
<body>
<form name="f">
<table bgcolor="#C0C0C0" border="1">
<tbody><tr>
<td colspan="4" align="right">
Score : <input type="text" name="score" value="0" size="2">
<br>
Fails (6): <input type="text" name="fails" value="0"size="2">  
</td>
<td colspan="7" align="CENTER">
<input type="text" name="hangman" value="    --- Hangman ---" size="25"> 
<br>
<input type="text" name="msg" value="Click GO to get a word." size="25">  
</td>
<td colspan="2" align="center">
<input type="button" onclick="startGame()" value=" START ">   
</td>
</tr>
<tr>
<td><input type="BUTTON" value=" A " onclick="find('A');"></td>
<td><input type="BUTTON" value=" B " onclick="find('B');"></td>
<td><input type="BUTTON" value=" C " onclick="find('C');"></td>
<td><input type="BUTTON" value=" D " onclick="find('D');"></td>
<td><input type="BUTTON" value=" E " onclick="find('E');"></td>
<td><input type="BUTTON" value=" F " onclick="find('F');"></td>
<td><input type="BUTTON" value=" G " onclick="find('G');"></td>
<td><input type="BUTTON" value=" H " onclick="find('H');"></td>
<td><input type="BUTTON" value=" I   " onclick="find('I');"></td>
<td><input type="BUTTON" value=" J  " onclick="find('J');"></td>
<td><input type="BUTTON" value=" K " onclick="find('K');"></td>
<td><input type="BUTTON" value=" L  " onclick="find('L');"></td>
<td><input type="BUTTON" value=" M " onclick="find('M');"></td>
</tr>
<tr>
<td><input type="BUTTON" value=" N " onclick="find('N');"></td>
<td><input type="BUTTON" value=" O " onclick="find('O');"></td>
<td><input type="BUTTON" value=" P " onclick="find('P');"></td>
<td><input type="BUTTON" value=" Q " onclick="find('Q');"></td>
<td><input type="BUTTON" value=" R " onclick="find('R');"></td>
<td><input type="BUTTON" value=" S " onclick="find('S');"></td>
<td><input type="BUTTON" value=" T " onclick="find('T');"></td>
<td><input type="BUTTON" value=" U " onclick="find('U');"></td>
<td><input type="BUTTON" value=" V " onclick="find('V');"></td>
<td><input type="BUTTON" value=" W " onclick="find('W');"></td>
<td><input type="BUTTON" value=" X  " onclick="find('X');"></td>
<td><input type="BUTTON" value=" Y " onclick="find('Y');"></td>
<td><input type="BUTTON" value=" Z  " onclick="find('Z');"></td>
</tr>
</tbody>
</table>
</form>
</body>
</html>

让我们检查以下3行代码

var num = Math.floor(keywords);
actualword = keywords[num];
actualword = actualword.toUpperCase();

这里的actualword是未定义的,这就是它给出错误的原因。现在actualword是未定义的,因为keywords[nums]没有返回正确的元素,这是因为Math.floor(keywords(返回NaN

所以问题出在Math.floor(关键字(一行

最新更新