Q:

indexOf not returning correct index

Re: Hangman Game
Objective: after user guess a letter, retrieve the index of the letter in the word.
Issue: The number returned is not the correct index of the word. It's the 3rd to the last line of code.
I'm a newbie so go easy on me please :)  This is so hard!
// 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);

});

}); 

A:

This is all in the comments above, but the problem was that theWord needed to be declared at the same level as badGuesses (and assigned but not declared in newGame, just like badGuesses) and be removed as a parameter to guessLetter. Then guessLetter had the desired value of theWord, and the indexOf call worked.

