@Kuper132

Как обратиться к ParentNode без this?

var closeBtn = document.getElementsByClassName('closebtn')
for (var i = 0; i < closeBtn.length; i++) {
	closeBtn[i].onclick = function() {
		var div = this.parentNode;
		div.style.opacity = '0';
		setTimeout(function() {
			div.style.display = 'none'
		},6)
	}
}


Как можно обратиться к Parentu из массива без this? Пробовал так var div = closeBtn[i].parentNode; но ошибка получается почему то.
  • Вопрос задан
  • 162 просмотра
Решения вопроса 2
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
[].forEach.call(document.getElementsByClassName('closebtn'), function(i) {
	i.onclick = function() {
	    var div = this.parentNode;
	    div.style.opacity = '0';
	    div.style.display = 'none'
	}
})
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
Объявите счётчик цикла с помощью let вместо var - тогда closeBtn[i] будет таким, как вам надо.

Или, обращайтесь к кликнутому элементу через объект события:

for (const n of document.querySelectorAll('.closebtn')) {
  n.addEventListener('click', onClick);
}

function onClick(e) {
  const parent = e.currentTarget.parentNode;
  // ...
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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