Как можно добавить класс к элементу "p" в каждом слайде при нажатии на элемент "i-play", чтобы это происходило независимо для каждого слайда? <br/> <br/> <pre><code class="html"><ul class="slider">
<li class="slide">
<div class="i-play"></div>
<p>Простот текст</p>
</li>
<li class="slide">
<div class="i-play"></div>
<p>Простот текст</p>
</li>
<li class="slide">
<div class="i-play"></div>
<p>Простот текст</p>
</li>
</ul></code></pre> <br/> <br/> Я пробовал реализовать это следующим образом: <br/> <br/> <pre><code class="javascript">document.querySelectorAll(".i-play").forEach((el) => {
el.addEventListener("click", function () {
document.querySelector(".slide p").classList.add("show");
});
});</code></pre> <br/> <br/> Однако при использовании этого кода срабатывает только первый слайд.
Проблема в вашем коде заключается в том, что вы в каждой итерации добавляете класс "show" только к первому элементу `<p>` в документе, так как `document.querySelector(".slide p")` всегда будет возвращать первый найденный элемент. Вместо этого вам нужно добавить класс только к тому элементу `<p>`, который находится в том же родительском слайде, что и кликнутый элемент `.i-play`.
Для этого можно использовать `closest` для поиска родительского элемента `<li class="slide">` и затем находить внутри него нужный элемент `<p>`. Вот исправленный код:
```javascript
document.querySelectorAll(".i-play").forEach((el) => {
el.addEventListener("click", function () {
const slide = el.closest(".slide"); // Найти родительский элемент slide
const p = slide.querySelector("p"); // Найти p внутри этого slide
p.classList.add("show"); // Добавить класс show к найденному p
});
});
```
С помощью этого исправленного кода при нажатии на элемент `.i-play` будет добавляться класс `show` только к тому элементу `<p>`, который находится внутри слайда, на который был произведён клик.
document.querySelectorAll(".i-play").forEach((el) => { el.addEventListener("click", function () { document.querySelectorAll(".slide p").forEach(p => { p.classList.add("show"); }); }); });