В настоящее время я пытаюсь сделать настольную игру в стиле памяти (я самоучка, и подобные вещи отлично помогают мне в понимании javascript). Мой вопрос, вероятно, базовый, но я новичок во всем этом, поэтому я ценю любую помощь.
Моя проблема в том, что у меня есть две карты одного класса, и с моим кодом, когда я нажимаю на первую или вторую, он работает только на первой карте.
document.querySelectorAll(".first-card").forEach(container => {
container.addEventListener('click', flipCard)
})
function flipCard() {
document.querySelector(".first-card").classList.toggle("flip")
}*,
*::before,
*::after {
box-sizing: border-box;
}
body {
padding: 100px;
display: flex;
}
.first-card,
.second-card {
width: 100px;
height: 150px;
border: 3px solid black;
border-radius: 10px;
transition: 0.6s;
transform-style: preserve-3d;
position: relative;
margin: 10px;
}
.flip {
transform: rotateY(180deg);
}
.front,
.back {
backface-visibility: hidden;
position: absolute;
top: 0;
left: 0;
}
.front {
z-index: 2;
transform: rotateY(0deg);
}
.back {
transform: rotateY(180deg);
}
.first-card .front {
background: lightblue;
width: 100%;
height: 100%;
}
.second-card .front {
background: red;
width: 100%;
height: 100%;
}
.first-card .back,
.second-card .back {
background: black;
width: 100%;
height: 100%;
}<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "UTF-8" />
<meta http-equiv = "X-UA-Compatible" content = "IE=edge" />
<meta name = "viewport" content = "width=device-width, initial-scale=1.0" />
<link rel = "stylesheet" type = "text/CSS" href = "memory.css" />
</head>
<body>
<div class = "first-card">
<div class = "front">
front
</div>
<div class = "back">
back
</div>
</div>
<div class = "second-card">
<div class = "front">
front
</div>
<div class = "back">
back
</div>
</div>
<div class = "first-card">
<div class = "front">
front
</div>
<div class = "back">
back
</div>
</div>
<div class = "second-card">
<div class = "front">
front
</div>
<div class = "back">
back
</div>
</div>
<script src = "memory.js"></script>
</body>
</html>Как я уже сказал, я только новичок, поэтому любая помощь или объяснение приветствуются. Спасибо



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это «не работает», потому что в вашей функции flipCard вы получаете первый элемент, который соответствует className fist-card. Этот элемент всегда будет одним и тем же. Просто измените свою функцию на это:
function flipCard(v){
v.currentTarget.classList.toggle("flip")
}
использовать ниже
function flipCard(event){
event.target.classList.toggle("flip")
}
evt.currentTarget, который будет ссылаться на родителя в этом контексте. Так что, думаю, вам это не пригодится. смотрите mdn для этого