-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
65 lines (52 loc) · 1.69 KB
/
index.js
File metadata and controls
65 lines (52 loc) · 1.69 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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
const rootEl = document.getElementById('root');
const taskInputField = document.querySelector('input');
const list = document.getElementById('list');
const addBtn = document.querySelector('button');
let listItems = [];
const addTasks = (e) => {
e.preventDefault();
if (taskInputField.value.trim() !== '') {
listItems.push(taskInputField.value);
showTasks(listItems);
}
};
const showTasks = (listItems) => {
list.innerHTML = '';
if (!listItems) return;
for (const listItem of listItems) {
const item = document.createElement('li');
const deleteBtn = document.createElement('button');
const checkbox = document.createElement('input');
checkbox.type = 'checkbox';
item.textContent = listItem;
item.style.listStyle = 'none';
item.name = listItem;
item.insertAdjacentElement('afterbegin', checkbox);
checkbox.onclick = () => styleItem(item);
deleteBtn.name = listItem;
deleteBtn.onclick = (e) => deleteTask(e.target.name);
deleteBtn.innerText = 'X';
item.insertAdjacentElement('beforeend', deleteBtn);
list.append(item);
}
console.log('Stored items are', listItems);
taskInputField.value = '';
taskInputField.focus();
};
const styleItem = (task) => {
task.classList.toggle('done');
};
const deleteTask = (itemName) => {
listItems.splice(listItems.indexOf(itemName), 1);
showTasks(listItems);
};
const deleteAllTasks = () => {
listItems = [];
showTasks();
};
const deleteAllBtn = document.createElement('button');
deleteAllBtn.textContent = 'Delete All';
deleteAllBtn.style.marginTop = '100px';
rootEl.append(deleteAllBtn);
deleteAllBtn.onclick = () => deleteAllTasks();
addBtn.addEventListener('click', (e) => addTasks(e));