Задать вопрос
@toyvo_glumov

Как переназначить события onclick после выполнения функции?

Есть список элементов, которым назначается онклик в зависимости от наличия у родителя конкретного класса.

function init() {
 for (i = 0; i < kompListItem.length; i++) {
  if (kompListItem[i].parentNode.className !== 'added-to-table') {
       kompListItem[i].onclick = present;
    } else {
      var x = 1;
       kompListItem[i].onclick = udalitCol(x);
      }
 }
}


Дело в том, что по итогам выполнения функции present класс родителей меняется и нужно заново переназначать событие. Пробовал поставить init() в конец функции present но так все ломается.
  • Вопрос задан
  • 205 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 1
youngmysteriouslight
@youngmysteriouslight
ТК, ТТ, JS, FP, WM
Вы можете перенести проверку класса родителя и разделение логики present/udalitCol в сам обработчик события, поскольку при вызове доступна ссылка на элемент, по которому был произведён клик.
// цикле без if-условия
kompListItem[i].onclick = function() {
  if (this.parentNode.className !== 'added-to-table')
    return present.call(this);
  else
    return udalitCol.call(this);
};


Альтернативно, Вы можете добавить вызов init в конец функции present, но учтите, что все свободные имена этой функции (kompListItem, i) необходимо перед вызовом обновить или другим, соответствующим логике приложения образом обработать.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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