Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html>
- <head>
- <title>Hello World!</title>
- <link rel="stylesheet" href="styles.css" />
- </head>
- <body>
- <div>
- <label for="text">Enter your Todo text</label>
- <input id="text" placeholder="something"/>
- <button onclick="parseTodo()">Add</button>
- </div>
- <div id="todolist"></div>
- <script src="script.js"></script>
- </body>
- </html>
- let todos = []
- let ids = 0;
- function parseTodo() {
- let textInput = document.querySelector("#text");
- addTodo(textInput.value)
- }
- function addTodo(text) {
- todos.push({id: ++ids, text: text});
- render();
- }
- function startEdit(id) {
- todos = todos.map(todo => todo.id === id ? {id, isEditing: true, ...todo} : todo);
- render();
- }
- function editTodo(id, newTodo) {
- todos = todos.map(todo => todo.id === id ? {id, isEditing: false, ...newTodo} : todo);
- render();
- }
- function removeTodo(id) {
- todos = todos.filter(todo => todo.id !== id);
- render();
- }
- function render() { //Отрисовываем наши данные
- let todolist = document.querySelector("#todolist"); //Получаем узел списка
- console.log(...todos) //Любуемся в консоли на наши данные
- todolist.innerHTML = ""; //Стираем текущий список
- todos.forEach(todo => { //Идём по нашим тудушкам
- let todoBox = document.createElement("div"); //Создаём контейнер тудушки
- let removeButton = document.createElement("button"); //Создаём кнопку удаления тудушки
- removeButton.textContent = "X"; //Текст кнопки
- removeButton.addEventListener("click", () => removeTodo(todo.id)) //При нажатии удаляем
- todoBox.appendChild(removeButton); //Цепляем кнопку к контейнеру
- if(!todo?.isEditing) { //Если Тудушка сейчас не редактируется
- let textLabel = document.createElement("a"); //Создаём элемент тега текста
- textLabel.textContent = todo.text; //Заполняем текстом
- todoBox.appendChild(textLabel); //Цепляем текст к нашему контейнеру
- let editButton = document.createElement("button"); //Создаём кнопку редактирования
- editButton.textContent = "Edit"; //Указываем текст
- editButton.addEventListener("click", () => startEdit(todo.id)) //Начинаем редактирование при нажатии
- todoBox.appendChild(editButton); //цепляем кнопку редактирования к контейнеру тудушки
- } else { //Если же тудушка сейчас редактируется
- let editInput = document.createElement("input"); //Создаём поле ввода
- editInput.value = todo.text; //Заполняем его изначально текстом самой тудушки
- todoBox.appendChild(editInput); //Цепляем инпут к контейнеру
- let editButton = document.createElement("button"); //Создаём кнопку завершения редактирования
- editButton.textContent = "V"; //Текст кнопки
- editButton.addEventListener("click", () => editTodo(todo.id, {text: editInput.value})) //Редактируем тудушку
- todoBox.appendChild(editButton); //Цепляем кнопку завершения редактирования к контейнеру
- }
- todolist.appendChild(todoBox) //Цепляем контейнер к списку
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment