-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
51 lines (44 loc) · 1.54 KB
/
script.js
File metadata and controls
51 lines (44 loc) · 1.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
const inputEl = document.querySelector('#input-todo');
const addBtnEl = document.querySelector('#add-btn');
const todoBlockEl = document.querySelector('#todo-block');
const closeBtn = '\u00D7';
const parentContainer = 'div';
const childElement = 'button';
addBtnEl.addEventListener('click', onClick);
todoBlockEl.addEventListener('click', onCompleteTask, true);
function onCompleteTask(e) {
const elements = todoBlockEl.children;
for (let i = 0; i < elements.length; i++) {
if (e.target.id && elements[i].id && elements[i].id === e.target.id) {
elements[i].classList.toggle('complete');
}
}
}
function onRemoveTask(e) {
const item = e.target.closest('.todo-item');
item.remove();
}
function onClick() {
if (inputEl.value) {
createElement(inputEl, closeBtn, todoBlockEl, parentContainer, childElement);
} else {
alert('Enter todo list');
}
clearValue(inputEl);
}
function createElement(parentTitle, childTitle, container, parentTag, childTag) {
let todoData = document.createElement(parentTag);
let closeButton = document.createElement(childTag);
todoData.textContent = parentTitle.value.trim();
closeButton.textContent = childTitle;
todoData.classList.add('todo-item');
todoData.classList.add('not-compleat');
closeButton.classList.add('close');
todoData.id = `list-element${Math.random()}`;
closeButton.addEventListener('click', onRemoveTask);
container.append(todoData);
todoData.append(closeButton);
}
function clearValue(el) {
el.value = '';
}