Существует 2 независимые функции, которые слушают событие click:
1) document.addEventListener('click', aa);
2) document.getElementById('test').addEventListener('click', bb);
Элемент 'test', это таблица.
Функция bb переписывает innerHTML у элемента, а функция aa проверяет был ли клик по элементу.
Проблема: Функция аa получает event.target, к примеру
<td>555</td>
, но при проверке
element.contains(event.target)
получаю false, так как innerHTML уже переписан.
Почему так, ведь на вход обеих функций подаются первоначальные данные, где innerHTML еще не переписан?!
Попытался накидать пример на codepen, но не получилось, там я наблюдаю обратный эффект
https://codepen.io/workcode/pen/MWymLPj
Даже установив задержку в 1сек между выполнением функции, там всегда получаю true, так в функцию aa попадают каким-то боком измененные данные.
Т.е. кликаю по 'Hey', а пишет, что клик был по 'Bye', почему?
PS. Объяснил наверно сложно, легче код из 10 строк посмотреть, и результат.