Witam po dłuższej przerwie,
spędziłem już trochę czasu nad moim problemem, więc zwracam się do was o pomoc.
Mam dwie metody. Jedna pobiera wszystkie obiekty z klasą "no-clicked", po kliknięciu na obiekt z tą klasą dodaje do array. Po drugim kliknięciu na następny obiekt, metoda guessPair porównuje zawartość klikniętych obiektów.
Gdy są takie same, usuwa klasy "no-clicked" dodaje "clicked". Gdy nie są takie same, klasy zostawia bez zmian. Zabawa zaczyna się od początku z pozostałymi obiektami.
Nic skomplikowanego, a jednak.
Wszystko działa do pierwszej zgadniętej pary. Później wolna amerykanka i błędy: Uncaught TypeError: Cannot read property 'classList' of undefined.
parseClick: function() {
var characters = document.getElementsByClassName("no-clicked"),
arrPair = new Array(0),
arrCharacterLenght = characters.length,
clickSound = document.getElementById("soundClick"),
j = 0;
if (arrCharacterLenght === 0) {
setTimeout(view.congratulations, 2100);
} else {
function clickCheck(i) {
characters[i].addEventListener("click", function() {
var clickedCharacter = characters[i];
console.log("klikniety "+clickedCharacter+" numer "+i);
clickedCharacter.classList.add("clicked");
j++;
view.showUp(clickedCharacter);
view.soundClick(clickSound);
arrPair.push(clickedCharacter);
if (j === 2) {
contnroller.guessPair(arrPair);
j = 0;
arrPair.length = 0;
}
}, false)
};
for (var i = 0; i < arrCharacterLenght; i++) {
clickCheck(i);
}
}
},
guessPair: function(pair) {
var firstLetter = pair[0].getElementsByTagName("p")[0].innerHTML,
secondLetter = pair[1].getElementsByTagName("p")[0].innerHTML;
if (firstLetter === secondLetter) {
pair[0].classList.remove("no-clicked");
pair[1].classList.remove("no-clicked");
view.hit();
contnroller.parseClick();
} else {
pair[0].classList.remove("clicked");
pair[1].classList.remove("clicked");
view.backHide(pair);
view.miss();
}
},
}
Dzięki za pomoc.