-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathscript.js
More file actions
103 lines (69 loc) · 2.18 KB
/
script.js
File metadata and controls
103 lines (69 loc) · 2.18 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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
const todoInput = document.getElementById('todo-input');
const addButton = document.getElementById('add-button');
const todoList = document.getElementById('todo-list');
let todos = JSON.parse(localStorage.getItem('todos')) || [];
document.addEventListener('DOMContentLoaded', () => {
renderTodos();
});
addButton.addEventListener('click', addTodo);
todoInput.addEventListener('keypress', (e) => {
if (e.key === 'Enter') {
addTodo();
}
});
function addTodo() {
const todoText = todoInput.value.trim();
if (todoText === '') return;
const todo = {
id: Date.now(),
text: todoText,
completed: false
};
todos.push(todo);
saveTodos();
renderTodos();
todoInput.value = '';
}
function renderTodos() {
todoList.innerHTML = '';
todos.forEach(todo => {
const li = document.createElement('li');
li.className = `todo-item ${todo.completed ? 'completed' : ''}`;
li.innerHTML = `
<span>${todo.text}</span>
<div class="todo-actions">
<button class="complete-btn" data-id="${todo.id}">
${todo.completed ? '✓' : '○'}
</button>
<button class="delete-btn" data-id="${todo.id}">🗑</button>
</div>
`;
todoList.appendChild(li);
});
document.querySelectorAll('.complete-btn').forEach(btn => {
btn.addEventListener('click', toggleTodo);
});
document.querySelectorAll('.delete-btn').forEach(btn => {
btn.addEventListener('click', deleteTodo);
});
}
function toggleTodo(e) {
const id = Number(e.target.getAttribute('data-id'));
todos = todos.map(todo => {
if (todo.id === id) {
return { ...todo, completed: !todo.completed };
}
return todo;
});
saveTodos();
renderTodos();
}
function deleteTodo(e) {
const id = Number(e.target.getAttribute('data-id'));
todos = todos.filter(todo => todo.id !== id);
saveTodos();
renderTodos();
}
function saveTodos() {
localStorage.setItem('todos', JSON.stringify(todos));
}