<div class="blog__list">
<article class="blog__item blog__open">
<div class="blog__background-open">
</div>
<div class="blog__close is-hidden">
</div>
</article>
<article class="blog__item">
<div class="blog__background-open is-hidden">
</div>
<div class="blog__close">
</div>
</article>
<article class="blog__item">
<div class="blog__background-open is-hidden">
</div>
<div class="blog__close">
</div>
</article>
</div>
var blogs = document.getElementsByClassName('blog__item');
for (var i = 0; i < blogs.length; i++) {
blogs[i].addEventListener('click', function () {
if (this.classList.contains('blog__open')) {
return;
} else {
this.classList.add('blog__open');
this.querySelector('.blog__background-open').classList.remove('is-hidden');
this.querySelector('.blog__close').classList.add('is-hidden');
this.nextElementSibling.classList.remove('blog__open');
this.previousElementSibling.classList.remove('blog__open');
}
});
}
вот такой код. я js плохо знаю, так в общих чертах, собрал с миру по нитке. Должно быть так, при клике по
<article class="blog__item">
у него проверяется наличие класса blog__open, если он есть ничего не происходит. Если нет то он добавляется, добавляются нужные классы его двум детям, а у всех соседних элементов убирается класс blog__open. Как я понимаю нужен for что б проверить все соседние элементы, я попытался, не получилось, код ниже выложу. Но даже в этом случае последний элемент не воздействует на предыдущего соседа. Второй элемент нормально. Первый на следующий элемент воздействует, а предыдущего у него нет. Элементов
<article class="blog__item">
будет больше. Помогите разобраться.
Вот код попытка:
for (var i = 0; i < blogs.length; i++) {
blogs[i].addEventListener('click', function () {
if (this.classList.contains('blog__open')) {
return;
} else {
this.classList.add('blog__open');
this.querySelector('.blog__background-open').classList.remove('is-hidden');
this.querySelector('.blog__close').classList.add('is-hidden');
var previousSibling = document.getElementsByClassName('blog__item').previousElementSibling;
for (var i = 0; i < previousSibling.length; i++) {
previousSibling[i].classList.remove('blog__open');
previousSibling[i].querySelector('.blog__background-open').classList.add('is-hidden');
previousSibling[i].querySelector('.blog__close').classList.remove('is-hidden');
}
var nextSibling = document.getElementsByClassName('blog__item').nextElementSibling;
for (var i = 0; i < nextSibling.length; i++) {
nextSibling[i].classList.remove('blog__open');
nextSibling[i].querySelector('.blog__background-open').classList.add('is-hidden');
nextSibling[i].querySelector('.blog__close').classList.remove('is-hidden');
}
}
})
}
Тут, кроме выше описанного, должно быть что каждый соседний элемент добавляет своим детям нужные классы. А по факту выполняются только первые три пункта от else.