I am creating a TODO app in JavaScript. How can I understand how to link two created JavaScript items and remove them from the DOM?
TL;DR: The place where I keep getting stuck is navigating the DOM after the list item has been created. I have tried to use a a setAttribute to the created elements with an incriminating "id" tag, but I still can figure out how to iterate over the LI's to find which button was pressed.
Code:
<div class="entry-field">
<label class="task-input" for="task-input">Task:</label>
<input type="text" class="task-field" placeholder="Enter Item"/>
<button class="add-btn">ADD</button>
</div>
<section class="task-list">
<h2>Task List</h2>
<div class="list-wrap"></div>
<ul class="item-log">
<li class="list-item">
<span class="item-text">this is the item</span>
<button class="delete-btn">delete</button>
</li>
</ul>
</div>
</section>
</main>
JavaScript:
let index = 0;
//Obtaining user text, creating a Span element, append span with user text:
function addItem() {
let itemLog = document.querySelector(".item-log");
let listItem = document.createElement("LI");
let deleteBtn = document.createElement("BUTTON");
let userEntry = document.querySelector(".task-field").value;
let spanItem = document.createElement("SPAN");
index++;
//Creating LI "list-item" and append UL "itemLog"
itemLog.appendChild(listItem);
listItem.classList.add("list-item");
listItem.setAttribute("id", index);
//Create Span element, assign text from user input, append LI
spanItem.innerHTML = userEntry;
listItem.appendChild(spanItem);
//Create deleteBtn and append to LI
deleteBtn.innerHTML = "Delete";
deleteBtn.classList.add("delete-btn");
deleteBtn.setAttribute("onclick", "deleteItem()");
deleteBtn.setAttribute("id", index);
listItem.appendChild(deleteBtn);
userEntry.value = "";
}
/*
2) Deleting item from list:
-use event listener to trigger parent node
-delete child
*/
function deleteItem() {
let listItem = this.parentElement;
listItem.parentElement.removeChild(listItem);
}
// Page event listeners
let addBtn = document.querySelector(".add-btn");
addBtn.addEventListener("click", addItem);