我是编程方面的新手。我必须编写刽子手游戏我的javascript并且有一个大问题:D这是我的功能。问题是:当用户输入正确的字母时它出现在错误的猜测中我也是不知道为什么。
function IsLetterInWord(letter)
{
for(i = 0; i< Word.length; i++)
{
if(letter == Word[i])
{
secretword[i] == letter;
RightGuess += letter;
var el = document.getElementById("right");
el.innerHTML = "Your right guesses are:" + RightGuess;
win();
}
}
if (letter != Word[i]){
WrongGuess += letter;
var e = document.getElementById("wrong");
e.innerHTML = "Your wrong guesses are:" + WrongGuess;
}
}
答案 0 :(得分:1)
您应该使用indexOf()
方法。该方法返回可在数组中找到给定元素的第一个索引,如果不存在则返回-1。
Link to docs
"string".indexOf("r") > -1;
您还需要在第7行使用单个等号:
secretword[i] = letter; // instead of ==
答案 1 :(得分:0)
您的逻辑存在问题:如果字母与目标中的每个字母不匹配,您就会将字母视为错误,而它应该只是如果它与任何字母不匹配,则算错。另外,错误的字母应该只计算一次,而正确的字母应该计入每次匹配。
就像养成良好习惯一样(虽然它对于像这样小的东西没有什么不同),尽量不要不必要地重复DOM操作,因为它们相当慢。像
这样的事情var el = document.getElementById("right");
应该在循环之前完成而不是在它内部(元素的标识明显不会改变)和
之类的东西el.innerHTML = "Your right guesses are:" + RightGuess;
只能在循环结束后完成(浏览器每次调用时都必须重绘部分屏幕)。