Как обратиться к соседском элементу через js?

Хочу сделать раскрывающийся текст, при нажатии на "читать дальше" Сделала так:

this.parentNode.parentNode.childNode[1].style.свойство

Мне кажется, что это, вроде как, должно работать, но не работает. Пожалуйста, объясните почему..


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

Автор решения: OPTIMUS PRIME

parentNode - он всегда один, в единственном числе. Но childNodes - в множественном, их может быть больше одного.

this.parentNode.parentNode.childNodes[1].style.display = "block";

Но у childNodes есть неприятный подвох. Он включает и пробелы (переносы строк) / тексты / комментарии между HTML-элементами:

console.log( test.childNodes.length ); // 7! 

// пробел, <!--комментарий-->, пробел, <p>, пробел, <p>, пробел
<div id="test">
  <!-- test -->
  <p>1<p>
  <p>1<p>
</div>

Поэтому надежнее использовать children - возвращающий список только из HTML-элементов.

this.parentNode.parentNode.children[1].style.display = "block";
→ Ссылка