Вместо использования
document.getElementsByClassName('myPopup')[i]
используйте
this.querySelector('.myPopup')
this
относится к el
, поэтому запрос выполняется только Внутри каждого el
.
Вместо getElementsByClassName('myPopup')[i]
мы используем querySelector('.myPopup')
, который всегда возвращает первый .mypopup
в каждом el
.
(Отредактировано после хорошей обратной связи, предоставленной @ Эрети c Обезьяна )
var el = document.querySelectorAll(".popup");
for (var i = 0; i < el.length; i++) {
el[i].onclick = function() {
this.querySelector('.myPopup').classList.toggle("show");
}
}
.myPopup {
display: none;
}
.myPopup.show {
display: block;
}
<div class="popup">Button1
<span class="myPopup">Text inside popup1</span>
</div>
<div class="popup">Button2
<span class="myPopup">Text inside popup2</span>
</div>