<table id="table_orders" border="green">
<thread>
<tr><th>Name</th><th>Value</th><th>Count</th><th><button class="add_order">add</button></th>
</thread>
<tr>
<td>Coffee</td><td>100</td><td><input type="text" class="input_count" value="1"></td><td><button class="save_order" onclick="saveTR(this)">save</button></td>
</tr>
<tr>
<td>Tea</td><td>200</td><td><input type="text" class="input_count" value="2"></td><td><button class="save_order" onclick="saveTR(this)">save</button></td>
</tr>
</table>
function saveTR(xThis){
console.log(xThis)
}
document.querySelector('table').addEventListener('click', ({ target: t }) => {
if (t.classList.contains('save_order')) {
const tr = t.closest('tr');
console.log(tr);
}
// или
if (t.matches('.save_order')) {
let tr = t;
while ((tr = tr.parentNode).tagName !== 'TR') ;
console.log(tr);
}
});
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;
}