nastya97core
@nastya97core
Начинающий программист

Как получить все сообщения, кроме одного вида?

Здравствуйте. Есть вот такая система:
<div class="obj"><span class="who">Маша</span><div class="msg">Привет!</div></div>
<div class="obj"><div class="msg">Здравствуйте</div></div>
<div class="obj"><div class="msg">Приветствую</div></div>
<div class="obj"><span class="who">Я</span><div class="msg">Как дела?</div></div>
<div class="obj"><div class="msg">Как работа?</div></div>
<div class="obj"><span class="who">Катя:</span><div class="msg">Отлично!</div></div>
<div class="obj"><span class="who">Я</span><div class="msg">Что нового?</div></div>
<div class="obj"><span class="who">Маша</span><div class="msg">ничего</div></div>


Каждая строка - это блок с классом obj. В нём всегда присутствует блок с классом msg и иногда присутствует span с классом who.

Сообщения приходят и нужно их проверять. Нужно, чтобы проходили все, кроме тех, в которых во who указано Я. То есть получить все сообщения кроме своих. Как сделать это в одно действие (в один If)?

Просто у меня получается какая-то фигня из-за того, когда я проверяю
if (document.querySelector(".obj").querySelector(".who").innerText != "Я")

И если там условная Маша, то всё хорошо, но когда ничего нет вообще, то происходит ошибка, так как WHO - нет...

Вообще это можно сделать в 2 действия:
if (who) {
if (who.innerText != "Я") {
ok
}
} else {
ok
}


просто мне сказали, что это можно сделать в одно действие. как?
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Array
  .from(document.querySelectorAll('.obj'))
  .filter(n => n.querySelector('.who')?.innerText !== 'Я')
  .forEach(n => console.log(n.innerText));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы