function init(){
let cards = document.querySelectorAll('.card')
var newArr = []
matched = 0;
moves = 0;
cards.forEach(element=>{
element.classList.remove('match')
element.classList.remove('opened')
})
cards.forEach(element=> {
element.addEventListener('click',()=>{
console.log(moves)
if(opened.length!==2){
element.classList.add('opened');
opened.push(element);
addMove();
}
if (opened.length === 2) {
setTimeout(()=>{
if (opened[0].getAttribute('type') === opened[1].getAttribute('type')) {
opened[0].classList.add("match");
opened[1].classList.add("match");
opened = [];
matched = matched + 2;
if(matched === 16){
showModal()
}
}
else{
opened[0].classList.remove('opened');
opened[1].classList.remove('opened');
opened = [];
}
},1000)
}
})
})
newArr = shuffle([...cards])
for(let i = 0; i < newArr.length; i++){
field.append(newArr[i])
}
movesCounter.innerHTML = moves;
modal.style.display = 'none';
}
не проходит по:
- Элемент opened[0] должен получить класс match если тип opened[0] равняется типу opened[1]
- Элемент opened[1] должен получить класс match если тип opened[0] равняется типу opened[1]
- Переменная matched должна вырасти на 2 если тип opened[0] равняется типу opened[1]
- Функция showModal должна вызываться при нажатии на card если matched равняется 16
- Функция init должна удалить класс match для всех элементов .card
весь файл script.js:
var opened = [];
let movesCounter = document.querySelector('span')
let field = document.querySelector('.field')
const button = document.querySelector('#try-again')
const modal = document.querySelector('.modal')
function shuffle(arr){
var newArr1 = [...arr];
for(let i = 0; i < newArr1.length; i++){
var j = Math.floor(Math.random() * newArr1.length);
[newArr1[i], newArr1[j]] = [newArr1[j], newArr1[i]];
}
return newArr1;
}
function init(){
let cards = document.querySelectorAll('.card')
var newArr = []
matched = 0;
moves = 0;
cards.forEach(element=>{
element.classList.remove('match')
element.classList.remove('opened')
})
cards.forEach(element=> {
element.addEventListener('click',()=>{
console.log(moves)
if(opened.length!==2){
element.classList.add('opened');
opened.push(element);
addMove();
}
if (opened.length === 2) {
setTimeout(()=>{
if (opened[0].getAttribute('type') === opened[1].getAttribute('type')) {
opened[0].classList.add("match");
opened[1].classList.add("match");
opened = [];
matched = matched + 2;
if(matched === 16){
showModal()
}
}
else{
opened[0].classList.remove('opened');
opened[1].classList.remove('opened');
opened = [];
}
},1000)
}
})
})
newArr = shuffle([...cards])
for(let i = 0; i < newArr.length; i++){
field.append(newArr[i])
}
movesCounter.innerHTML = moves;
modal.style.display = 'none';
}
function addMove(){
moves++;
movesCounter.innerHTML = moves;
}
function showModal(){
const congratMess = document.querySelector('.congratulation-message span');
congratMess.innerHTML = moves;
modal.style.display = 'block';
}
button.addEventListener('click', ()=>{init()});
init();