Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Получение родительского элемента (https://javascript.ru/forum/dom-window/73079-poluchenie-roditelskogo-ehlementa.html)

Янковиц 20.03.2018 10:02

Получение родительского элемента
 
Есть верстка с многоуровневой вложенностью.
<div class="month" data-month="3">
   <div class="week">
      <div class="day">
         3
      </div>
   </div>
</div>
<div class="month" data-month="4">
   <div class="week">
      <div class="day">
         13
      </div>
   </div>
</div>

Как получить атрибут data-month?

Янковиц 20.03.2018 10:10

Нужно аналог parents в JQuery. perentNode возвращает прямого родителя :(

Dilettante_Pro 20.03.2018 10:24

<div class="month" data-month="3">
   <div class="week">
      <div class="day">
         3
      </div>
   </div>
</div>
<div class="month" data-month="4">
   <div class="week">
      <div class="day">
         13
      </div>
   </div>
</div>
<script>
var days = document.querySelectorAll('.day');
for(var i=0; i < days.length; i++) {
    alert( days[i].parentNode.parentNode.getAttribute('data-month'));
}
</script>

j0hnik 20.03.2018 10:47

<div class="month" data-month="3">
   <div class="week">
      <div class="day">
         3
      </div>
   </div>
</div>
<div class="month" data-month="4">
   <div class="week">
      <div class="day">
         13
      </div>
   </div>
</div>
<script>
[].forEach.call(document.querySelectorAll('.day'), function(el){ 
	while (el = el.parentNode) {
		if (el.dataset.month) {
			console.log(el.dataset.month);
			break;
		}
	}
});
</script>


более универсальное решение


Часовой пояс GMT +3, время: 10:17.