-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
54 lines (41 loc) · 1.2 KB
/
Copy pathscript.js
File metadata and controls
54 lines (41 loc) · 1.2 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
const form = document.querySelector("#form");
const input = document.querySelector("#itemInput");
const list = document.querySelector("#list");
const emptyMessage = document.querySelector("#empty");
form.addEventListener("submit", handleAddItem);
list.addEventListener("click", handleListClick);
function handleAddItem(event) {
event.preventDefault();
const text = input.value.trim();
if (!text) return;
const li = createListItem(text);
list.appendChild(li);
input.value = "";
toggleEmptyMessage();
}
function createListItem(text) {
const li = document.createElement("li");
li.innerHTML = `
<span>${text}</span>
<button class="remove-btn" aria-label="Remover item">✖</button>
`;
return li;
}
function handleListClick(event) {
const target = event.target;
const li = target.closest("li");
if (!li) return;
if (target.tagName === "SPAN") {
li.classList.toggle("done");
}
if (target.classList.contains("remove-btn")) {
li.style.opacity = "0";
setTimeout(() => {
li.remove();
toggleEmptyMessage();
}, 300);
}
}
function toggleEmptyMessage() {
emptyMessage.style.display = list.children.length ? "none" : "block";
}