indexOf没有返回正确的索引
问题描述:
回复:Hang子手游戏indexOf没有返回正确的索引
目标:用户猜测一个字母后,检索字中字母的索引。
问题:返回的数字不是单词的正确索引。这是代码的第三行。
我是一个新手,所以请容易我:)请这么难!
// JavaScript Document
$(document).ready(function() { // upon page load
var badGuesses; // reset bad guess counter
var alphabet = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Z"]; // array of letters to choose
$("#lettersRemaining").html(alphabet); // gets elements of the alphabet array and displays on UI
// N E W G A M E B U T T O N C L I C K E D
$("#newGame").click(function() { // when user clicks on Start New Game button...
$("#status").hide(); // upon game reset hide the status section stating game over
badGuesses = 0; // reset guess counter which is used later
var wordCollection = ["mansion", "statue", "gorilla", "notebook", "smartphone", "illustration", "photo", "elegant", "arborist", "keyboard", "calendar", "capital", "textbook", "horrible", "library"]; // array of words
var theWord = wordCollection[Math.floor(Math.random()*wordCollection.length)]; // randomly selects a word
console.log("theWord is ....");
console.log(theWord);
var theWordLength = theWord.length; // Get number of characters in randomly selected word
console.log("theWordLength is ....");
console.log(theWordLength);
// D I S P L A Y D A S H E S
var combineDashes = []; // creates an array to hold the number of dashes inside the for loop
for (var i = theWordLength; i > 0; i--)
{
combineDashes.push(" - "); // each loop through adds a dash to the array
}
combineDashes.join(" "); // joins cumulative dashes and converts to a string
$("#dashes").html(combineDashes); // displays dashes on UI
});
// G U E S S L E T T E R
$("#guessLetter").click(function(theWord) { // when user clicks on the Guess Letter button pass in theWord value ....
var letter = $("#theLetter").val(); // gets the letter the user is guessing
console.log("letter is ...");
console.log(letter);
// Is the letter a good or bad guess?
var letterContained = theWord.toString().indexOf(letter); // <-- NOT WORKING!! returns index from theWord for the letter guessed; -1 means bad guess
console.log("letterContained is...");
console.log(letterContained);
});
});
答
这是所有在上面的意见,但问题是,theWord需要在同一水平badGuesses拟申报(并分配,但在newGame,就像badGuesses未申报),并作为一个参数被移除猜猜信。然后guessLetter具有期望的WORD值,并且indexOf调用起作用。
你有没有尝试theWord.indexOf没有toString() –
我认为你的字母是大写,你的话是小写和indexOf区分大小写。 –
如果我的预感是正确的,设置theWord = wordCollection [你在这里选择] .toUpperCase()应该有帮助 –