как создать список в приложении todo более одного раза (только javascript)

#javascript

#javascript

Вопрос:

я выхожу var liElement = document.createElement('li'); из функции addTodo() , чтобы заставить эту функцию работать

  function removeTodo(){
    liElement.remove()
};  
 

но теперь у меня другая проблема: я не могу добавить более одного todo (li)

 const input = document.getElementById('input');
const addBtn = document.getElementById('btn');
const todoList = document.getElementById('todoList');
var ulElement = document.createElement('ul');
var liElement = document.createElement('li');
let placeholderValue = '';
 

// Этот код предназначен для четкого значения заполнителя

 input.addEventListener('focus' , () => {
    placeholderValue = input.placeholder;
    input.placeholder = '';
});

input.addEventListener('blur' , ()=> {
    input.placeholder = placeholderValue;
});
 

// эта функция предназначена для добавления в список дел

 function addTodo(){
    todoList.appendChild(ulElement)
    ulElement.appendChild(liElement);
    liElement.classList.add('liElement')
    liElement.innerHTML = input.value;
};
addBtn.addEventListener('click' , addTodo)
// this function is for remove todo from the list
function removeTodo(){
    liElement.remove()
};
liElement.addEventListener('contextmenu' , (e) => {
    e.preventDefault()
    removeTodo()
});
 

Ответ №1:

Вы не используете createTextNode , например :

  var t = document.createTextNode(input.value);
   liElement.appendChild(t);
 

… и вы создали очень сложную структуру. Сделайте это проще для себя.

И, наконец,

 const todoList = document.getElementById('todoList');
var ulElement = document.createElement('ul');
 

зачем использовать для создания элементов? они вам не нужны. Вы можете создать их в HTML-файле.