Прошу привести пример, как c помощью JS найти на странице текст получить класс родительского объекта

На странице есть "искомый текст", на выходе должен быть объект (переменная) с классом "родительский элемент" пример кода в котором надо найти "искомый текст" Проблема в том, что классы генерируются динамически и искать по названию класса бессмысленно. Но текст (часть текста\слово) неизменны. Поэтому элементы необходимо получить именно отталкиваясь только от текста.

<div class="родительский элемент">
 <div class="контейнер2">
  <div class="контейнер3">
  <p>искомый текст<p>
  </div>
 </div>
</div>


Ответы (1 шт):

Автор решения: Zhihar

чтобы получить просто текст из элемента можно воспользоваться свойства textContent или innerHTML:

let element = document.querySelector('.block3 p');
    
console.log(element.textContent);
console.log(element.innerHTML);
<div class="parent">
    <div class="block2">
        <div class="block3">
            <p>искомый текст</p>
        </div>
    </div>
</div>

чтобы получить родительский элемент необходимо использовать свойство parentElement

console.log(element.parentElement);

Однако, если вы не знаете где находится (в каком блоке) соответствующий текст, то придется пройтись по всем блокам, заглядывать в их дочерние блоки (использовать querySelectorAll('*')) и искать текст описанным выше способом (использовать textContent)

let elements = document.querySelectorAll('*');

for (const element of elements) {
    if (element.textContent.localeCompare('искомый текст') == 0) {
        console.log("исходный элемент:", element)
        console.log("родительский элемент:", element.parentElement)     
    }
} 
<div class="parent">
    <div class="block2">
        <div class="block3">
            <p>искомый текст</p>
        </div>
    </div>
</div>

→ Ссылка