将值存储在数组中而不会覆盖先前猜到的字母

时间:2017-03-27 10:02:29

标签: javascript

我正在创建一个刽子手游戏但是当我运行该程序时,正确的猜测会覆盖自己...... 我的函数猜测字母的代码在这里显示...如何将猜测的字母存储在数组中#34; letterBoxes"没有覆盖以前的值?

// Globala variabler
var wordList;  
var selectedWord;  på
var letterBoxes; 
var hangmanImg; 
var hangmanImgNr; 
var msgElem;  

function init() {
var i;
var startGameBtn;
var letterButtons;
wordList = 


["BLOMMA","LASTBIL","SOPTUNNA","KÖKSBORD","RADIOAPPARAT","VINTER","SOMMAR","DATORMUS","LEJON","ELEFANTÖRA","JULTOMTE",
            "SKOGSHYDDA","BILNUMMER","BLYERTSPENNA","SUDDGUMMI","KLÄDSKÅP","VEDSPIS","LJUSSTAKE","SKRIVBORD","ELDGAFFEL","STEKPANNA",
            "KASTRULL","KAFFEBRYGGARE","TALLRIK","SOFFBORD","TRASMATTA","FLYGPLAN","FLYGPLATS","TANGENTBORD"];

hangmanImg = document.getElementById("hangman");
msgElem = document.getElementById("message");
startGameBtn = document.getElementById("startGameBtn");
document.getElementById("startGameBtn").onclick = startGame; 
letterButtons =    
document.getElementById("letterButtons").getElementsByTagName("button");
for (i = 0; i < letterButtons.length; i++) letterButtons[i].onclick = 
guessLetter;//anrop av funktionen guessLetter

} // End init
window.onload = init; // Se till att init aktiveras då sidan är inladdad


function startGame() {

randomWord(selectedWord); //ok
showLetterBoxes(letterBoxes);
hangmanImg = "pics/h1.png"; //byt till h0.png när koden är klar
document.getElementById("hangman").src = hangmanImg;
hangmanImgNr = 0; //ok!
}
funktion skapa slumpat ord OK
function randomWord() {
var wordIndex;
wordIndex = parseInt(Math.random() * 29); 
selectedWord = wordList[wordIndex];
alert(selectedWord); 
}

function showLetterBoxes() {
var i;
var newCode;

newCode = "";
for (i = 0; i < selectedWord.length; i++) {
    newCode += "<span>&nbsp;</span>"; 
}

document.getElementById("letterBoxes").innerHTML = newCode;

document.getElementById("letterButtons").getElementsByTagName("value").innerHTML;
}

2 个答案:

答案 0 :(得分:1)

letterBoxes是一个数组。

你不使用+,你使用推送功能。

letterBoxes.push("<span>" + letter + "</span >");

letterBoxes.push("<span>*</span>");

答案 1 :(得分:0)

您需要在函数外部声明变量letterBoxes,否则每次运行代码时都会被覆盖。此外,您将其声明为letterBoxes = [],表明它是一个数组,但您在代码中用作字符串。

试试这个:

letterBoxes = '';

function guessLetter()
{
var letter;
var i;

var letterFound;//flagga
var correctLettersCount;//korrekta bokstäver
correctLettersCount; //sätt antal rätt bokstäver till 0

letter = this.value;
for (i = 0; i < selectedWord.length; i++) {


    if (selectedWord.charAt(i) == letter) {
        letterBoxes += "<span>" + letter + "</span >";

        } 
    else{
        letterBoxes += "<span>*</span>";
    }


   }
   document.getElementById("letterBoxes").innerHTML = letterBoxes; 
}