#javascript #dom
#javascript #dom
Вопрос:
Я составил список дел, при добавлении элемента его можно редактировать и удалять. Как можно переписать функцию createedit иdeleteelement, чтобы она была менее громоздкой или как разбить ее на несколько частей. Когда я попытался разбить его, он отобразил ошибку с li. Пожалуйста, помогите
const input = document.getElementById('list');
const btnAdd = document.querySelector('.btn-add');
const toDoList = document.querySelector('.todo-list');
btnAdd.addEventListener('click', () => {
if(input.value === '') {
return
}
createEditAndDeleteElement(input.value)
input.value ='';
});
function createEditAndDeleteElement(value) {
const li = document.createElement('li');
const btnDelete = document.createElement('button');
const btnEdit = document.createElement('button');
li.className = 'todo-list-item';
li.textContent = value;
btnDelete.className = 'btn-delete';
btnDelete.textContent = 'delete';
btnEdit.className = 'btn-edit';
btnEdit.textContent = 'edit';
li.appendChild(btnDelete);
li.appendChild(btnEdit);
btnDelete.addEventListener('click', () => {
toDoList.removeChild(li);
});
btnEdit.addEventListener('click', () => {
const editInput = document.createElement('input');
const saveEdit= document.createElement('button');
saveEdit.className = 'btn-save';
saveEdit.textContent = 'Save';
toDoList.removeChild(li);
toDoList.appendChild(editInput);
toDoList.appendChild(saveEdit);
editInput.value = li.textContent;
saveEdit.addEventListener('click', () => {
toDoList.removeChild(editInput);
toDoList.removeChild(saveEdit);
createEditAndDeleteElement(editInput.value)
})
});
toDoList.appendChild(li);
};
Ответ №1:
Я бы использовал шаблоны:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template
let template = document.getElementById('newElement');
let templateContent = template.content;
document.getElementById('addNew').onclick = createElement
function createElement() {
document.body.appendChild(templateContent);
}
function handleActions(action){
console.log(action)
}
<body>
<button id="addNew">Test</button>
<template id="newElement">
<button onclick="handleActions('Action 1')">Action1</button>
<button onclick="handleActions('Action 2')">Action2</button>
</template>
</body>