Repository navigation
Expand file tree
/
Copy pathscript.js
More file actions
53 lines (46 loc) · 1.53 KB
/
Copy pathscript.js
File metadata and controls
53 lines (46 loc) · 1.53 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
document.addEventListener('DOMContentLoaded', () => {
const todoInput = document.getElementById('todo-input')
const addTaskButton = document.getElementById('add-task-button')
const todoList = document.getElementById('todo-list')
let tasks = JSON.parse(localStorage.getItem('tasks'))||[];
tasks.forEach(task => renderTask(task));
addTaskButton.addEventListener('click' , () =>{
const taskText = todoInput.value.trim()
if(taskText === "") return;
const newTask = {
id: Date.now(),
text: taskText,
completed: false
}
tasks.push(newTask)
saveTasks()
renderTask(newTask)
todoInput.value = "" // Clear input
console.log(tasks);
});
function renderTask(task){
// console.log(task.text);
const li = document.createElement('li')
li.setAttribute('data-id',task.id)
if(task.completed) li.classList.add('completed')
li.innerHTML = `
<span>${task.text}</span>
<button>Delete</button>`;
li.addEventListener('click',(e) => {
if(e.target.tagName ==='BUTTON') return;
task.completed = !task.completed
li.classList.toggle('completed')
saveTasks()
});
li.querySelector('button').addEventListener('click',(e) => {
e.stopPropagation() //prevent toggle from firing
tasks = tasks.filter(t => t.id !== task.id)
li.remove();
saveTasks();
})
todoList.appendChild(li)
}
function saveTasks(){
localStorage.setItem('tasks',JSON.stringify(tasks))
}
})