Вытянуть id javascript
Есть скрипт, который при двойном клике фокусируется на ячейке таблицы и при нажатии enter вносятся изменения.
const send = (e) => {
if ((e.type === 'blur' && e.target.contentEditable === 'true') || e.which === 13) {
e.preventDefault();
e.target.contentEditable = false;
const xhr = new XMLHttpRequest();
xhr.open('POST', 'edit.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send(`text=${encodeURIComponent(e.target.textContent)}`);
}
};
[...document.querySelectorAll('td')].forEach(el => {
el.addEventListener('dblclick', e => {
e.target.contentEditable = true;
e.target.focus();
});
el.addEventListener('keypress', send);
el.addEventListener('blur', send);
});
Как добавить в скрипт возможность при двойном клике вытянуть id конкретной строки чтобы обработчик edit.php знал в какой конкретно строке вносить изменения?
Ответы (1 шт):
Автор решения: Юрий Копоть
→ Ссылка
ну, если ID, у родителя (TR) наверное получить, tr и взять его ID. Как-то так const id = e.target.closest('tr').id; . Если ID самой ячейки, то сразу у target - const id = e.target.id;
const send = (e) => {
if ((e.type === 'blur' && e.target.contentEditable === 'true') || e.which === 13) {
e.preventDefault();
e.target.contentEditable = false;
/** получаете, родителя в виде TR, и далее его ID. Ну или сразу у TD */
const id = e.target.closest('tr').id;
// const id = e.target.id;
/** формируете, данные для сервера*/
const data = JSON.stringify({
text: encodeURIComponent(e.target.textContent),
id
});
const xhr = new XMLHttpRequest();
xhr.open('POST', 'edit.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send(data);
}
};
[...document.querySelectorAll('td')].forEach(el => {
el.addEventListener('dblclick', e => {
e.target.contentEditable = true;
e.target.focus();
});
el.addEventListener('keypress', send);
el.addEventListener('blur', send);
});