@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 но так все ломается.
  • Вопрос задан
  • 198 просмотров
Решения вопроса 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) необходимо перед вызовом обновить или другим, соответствующим логике приложения образом обработать.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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