piszę wyszukiwarkę, chcę zrobić taką by wyszukać wyraz, który będzie składał się z pierwszych liter wyrazów, albo z drugich itp. licząc od góry, robię teraz dla pierwszych liter i kiedy wpisuje drugą literę wyskakuje mi w firefoxie > Uncaught TypeError: tasks[i][0] is undefined> a w chromie > main.js:70 Uncaught TypeError: Cannot read properties of undefined (reading 'textContent')
at HTMLInputElement.searchTask (main.js:70)>
HTML:
<form action="">
<input id='search' type="text">
<button>Dodaj zadanie</button>
</form>
<h1>Liczba zadań: <span>0</span></h1>
<ul>
<li>brukselka</li>
<li>groch</li>
<li>batat</li>
<li>ziemniak</li>
<li>burak</li>
<li>fasola</li>
<li>marchewka</li>
<li>pietruszka</li>
<li>por</li>
<li>cebula</li>
</ul>
JavaScript:
const form = document.querySelector('form');
const inputSearch = document.getElementById('search');
const ul = document.querySelector('ul');
const liElements = document.querySelectorAll('li');
const taskNumber = document.querySelector('h1 span');
const addTask = (e) => {
e.preventDefault()
const titleTask = inputSearch.value;
if (titleTask === "") return;
const task = document.createElement('li');
task.innerHTML = titleTask + "<button>Usuń</button>";
ul.appendChild(task);
input.value = "";
}
const searchTask = (e) => {
const searchText = e.target.value;
let letter = searchText[0];
let tasks = [...liElements];
const first = tasks[0];
let tasks2 = tasks.filter(li => li.textContent.includes(searchText));
console.log(tasks2.forEach(li => ul.appendChild(li)))
if (tasks2.length == 0) {
for (i=0; i<tasks.length; i++) {
if (tasks[i][0].includes(searchText[i])) {
return;
} else {
console.log('brak slowa')
}
}
}
}
form.addEventListener('submit', addTask);
input.addEventListener('input', searchTask)