Cześć.
Robię aplikację w której dodajemy zadanie i z tej listy możemy wyszukiwać konkretne zadanie. Dodawanie i usuwanie mi działa bo wziąłem to z poprzednich przykładów. Wyszukiwanie mi działa nie do końca tak jak trzeba. Przy każdym z zadań jest przycisk z napisem "Usuń" i wyszukiwarka szukając nazwy zadania bierze też pod uwagę to co jest w znaczniku button. Zadania są w znacznikach li a w każdym li znajduje się button. Poniżej zamieszczam kod. Ktoś podpowie jak to rozwiązać?
const toDoList = [];
const form = document.querySelector('form');
const ul = document.querySelector('ul');
const taskNumber = document.querySelector('h1 span');
const listItems = document.getElementsByClassName('task');
const input = document.querySelector('input');
const inputSearch = document.querySelector('input.search');
// const inputSearch = document.getElementsByClassName('search');
const removeTask = (e) => {
e.target.parentNode.remove();
const index = e.target.parentNode.dataset.key;
toDoList.splice(index, 1)
console.log(toDoList);
taskNumber.textContent = listItems.length;
renderList();
}
const addTask = (e) => {
e.preventDefault()
const titleTask = input.value;
if (titleTask === "") return;
const task = document.createElement('li');
task.className = 'task';
task.innerHTML = titleTask + " <button>Usuń</button>";
toDoList.push(task)
renderList()
ul.appendChild(task);
input.value = "";
const liItems = document.querySelectorAll('li.task').length;
taskNumber.textContent = listItems.length;
task.querySelector('button').addEventListener('click', removeTask);
}
const searchTask = (e) => {
const searchText = e.target.value.toLowerCase()
renderList()
let tasks = [...listItems];
console.log(tasks);
tasks = tasks.filter(li => li.textContent.toLowerCase().includes(searchText))
console.log(tasks);
ul.textContent = "";
tasks.forEach(li => ul.appendChild(li));
}
const renderList = () => {
ul.textContent = "";
toDoList.forEach((toDoElement, key) => {
toDoElement.dataset.key = key;
ul.appendChild(toDoElement);
})
}
form.addEventListener('submit', addTask);
inputSearch.addEventListener('input', searchTask)