лучше всего конечно, если у вас есть массив данных, и если вы их выводите в цикле, получать именно доступ к объекту отображения, то есть обработчик события в качестве аргумента будет получать не HTMLElement, а не посредственно сам объект данных.
Например:
function createElement(tag, attr) {
const element = document.createElement(tag);
Object.keys(attr).forEach(key => {
element.setAttribute(key, attr[key]);
});
return element;
}
function createTdElements(worker) {
const tr = createElement('tr', { class: 'table__body-row' });
const button = createElement('button');
Object.keys(worker).forEach(prop => {
const td = createElement('td', { class: 'table__body-item' });
td.textContent = worker[prop];
tr.appendChild(td);
});
button.addEventListener('click', (_,worker) => {
...здесь нужная логика c worker
})
tr.appendChild(button)
return tr;
}