В этом коде:
var dots = document.getElementById("dots");
var moreText = document.getElementById("more");
var btnText = document.getElementById("myBtn");
Вы выбираете первое вхождение элемента с id = "dots".Это всегда первый профиль в вашем списке.
1
Один простой способ решить эту проблему:
- изменить
<div id="dots">
на <div class="dots">
- параметризуйте эту функцию с помощью счетчика, затем найдите n-ное вхождение
, используйте document.querySelectorAll, чтобы найти все элементы ".dots", затем разверните элемент, используя переданный виндекс для myFunction (индекс).Вы можете использовать php counter var для отслеживания индекса.
<div class="about-readmore" onclick="myFunction(index)" id="myBtn">Read more</div>
2
Другой, возможно, более хрупкий способ сделать это будетискать вверх и вниз по DOM, чтобы найти ближайший расширяемый профиль:
function myFunction(event) {
var targetElementParent = event.target.parent;
var moreText = targetElementParent.querySelector(".more");
// The rest of the function could remain mostly the same
Я говорю, что это хрупко, потому что он довольно сильно зависит от структуры DOM, поэтому, если вы измените это, функция сломается,В этом случае, как и в # 1, вы должны изменить идентификаторы «dots», «more» и «myBtn» на классы, потому что эти элементы повторяются.
From Страница атрибута MDN Id :
Глобальный атрибут id определяет уникальный идентификатор (ID), который должен быть уникальным во всем документе