Do you know the meme that everytime a developer sits down to do a side project, they go into this ‘let me build a tool to make this part of the process and then a tool to make that tool and so where ultimately they end up building a To-Do List’? :)
In fact there’s exactly the site that lets you try out building a To-Do list in different Javascript frameworks out there!
So what did I build as I just get my bearings with plain vanilla Javascript? A To-do List!!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>The DOM</title>
<link rel="stylesheet" href="../../base.css">
</head>
<body>
<!-- What are these styles doing here? If you paused here, it is your homework.. hihhihhi-->
<style>
img {
transition: all 1s;
}
.round {
border-radius: 50%;
}
</style>
<script src="todo-list.js"></script>
</body>
</html>
const list = document.createElement('ul');
const itemManager = () => {
let index = 0;
return {
/**
* Adds an item
*/
add() {
const listItem = document.createElement('li');
listItem.textContent = `Item ${(index += 1)}`;
list.append(listItem);
document.body.append(list);
},
/**
* Removes an item
*/
remove() {
const listItem = document.querySelector('li');
listItem.remove();
},
};
};
const itemManagerInstance = itemManager();
// Add Button
const addButton = document.createElement('button');
addButton.innerHTML = `+`;
addButton.onclick = itemManagerInstance.add;
document.body.append(addButton);
// Remove Button
const removeButton = document.createElement('button');
removeButton.innerHTML = `-`;
removeButton.onclick = itemManagerInstance.remove;
document.body.append(removeButton);
I shared code for 2 files - index.html and todo-list.js. Copy the code lsitings into files named so and open the index.html in a browser! Both the files should be in the same directory. Here’s how it looks: