bagerman
@bagerman

Какой вариант правильнее и лучше?

Приветствую!

Какой правильнее, так :

for (var i = 0; i < div.children.length; i++) {
	p[i].onclick = function(e) {
		console.log(e.target.parentNode.removeChild(e.target));
	};
}

или использовать this:
for (var i = 0; i < div.children.length; i++) {
	p[i].onclick = function() {
		console.log(this.parentNode.removeChild(this));
	};
}


Спасибо
  • Вопрос задан
  • 198 просмотров
Решения вопроса 3
dunmaksim
@dunmaksim
Технический писатель
Оба плохие. Нужно ставить обработчик на контейнер, содержащий эти элементы, и перехватывать всплытие события по DOM. Подробности гуглите по словам "делегированная обработка событий". Вот хорошая статья по теме.
Так же все переменные лучше объявлять в начале модуля, a-la Pascal, а не в месте непосредственного использования, чтобы не столкнуться с проблемой всплытия переменной.
Ответ написан
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Корректно отделять бизнес-логику от обработчиков, на самом деле:) А вообще учитывая, какие неприятности доставляет новичкам this в джаваскрипте, лучше полагаться на событие.

function removeNode (node) {
  return node.parentNode.removeChilde(node);
}

for (var i = 0; i < div.children.length; i++) {
  p[i].onclick = function (event) {
    console.log(removeNode(event.target));
  };
}


P.S. Не пишите e как имя аргумента обработчика, пожалуйста. Что это за e – event, exception, error?
Ответ написан
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы