Cześć, mam problem z funkcją pozwalającą na wyszukanie elementów dodanych do listy przy użyciu metody 'filter'. Funkcja searchTask
działa w przypadku gdy dodam elementy ręcznie w html, gdy jednak dodaje je za pomocą funkcji w js następuję następujące: po wpisaniu szukanych liter do inputa elementy są prawidłowo filtrowane, jednak gdy usuwam tekst z inputa elementy, które nie pasowały do szukanej frazy nie są przywracane. Ktoś poradzi co tu można zmienić? Poniżej kod
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<title>To do list</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
h1, h2 {
text-align: center;
margin: 30px;
}
.container {
margin-top: 20px;
}
form {
display: flex;
width: 50vw;
margin: 20px auto;
}
.add-item input {
margin-right: 20px;
}
ul {
text-align: center;
}
</style>
</head>
<body>
<h1>Lista zadań</h1>
<form action="" class="add-item">
<input type="text" class="form-control" id="add-input" placeholder="Wpisz zadanie">
<button id="js-newGameButton" class="btn btn-success"> Dodaj </button>
</form>
<form action="" class="search-item">
<input type="text" class="form-control" id="search-input" placeholder="Wyszukaj">
</form>
<h2>Liczba zadań: <span>0</span></h2>
<ul class="list-group">
</ul>
<script >
const addForm = document.querySelector('.add-item');
const ul = document.querySelector('ul');
const taskNumber = document.querySelector('h2 span');
const listItems = document.getElementsByClassName('list-group-item');
const addInput = document.querySelector('#add-input');
const searchInput = document.querySelector('#search-input');
const removeTask = (e) => {
e.target.parentNode.remove();
taskNumber.textContent = listItems.length;
}
const addTask = (e) => {
e.preventDefault();
const titleTask = addInput.value;
if(titleTask === "") return; //jeśli input titleTask pozostanie pusty, po kliknięciu 'Dodaj' nic się nie wykona
const task = document.createElement('li');
task.className = 'list-group-item';
task.innerHTML = titleTask + ` <button class="btn btn-secondary btn-sm"> Usuń </button>`;
ul.appendChild(task);
addInput.value = ""
task.querySelector('button').addEventListener('click', removeTask);
taskNumber.textContent = listItems.length;
}
addForm.addEventListener('submit', addTask);
const searchTask = (e)=> {
const searchText = e.target.value.toLowerCase();
let tasks =[...listItems];
tasks = tasks.filter(li=> li.textContent.toLowerCase().includes(searchText));
console.log(tasks);
ul.textContent = "";
tasks.forEach(li=> ul.appendChild(li))
}
searchInput.addEventListener('input', searchTask);
</script>
</body>
</html>