document.querySelector('#filter-input').addEventListener('input', e => {
const val = e.target.value.toLowerCase();
container.querySelectorAll('.title').forEach(n => {
n.closest('.card').style.display = n.innerText.toLowerCase().includes(val)
? 'block'
: 'none';
});
});
или
document.getElementById('filter-input').oninput = function() {
const val = this.value.toLowerCase();
for (const n of container.getElementsByClassName('title')) {
let card = n;
while (!(card = card.parentNode).classList.contains('card')) ;
card.hidden = n.textContent.toLowerCase().indexOf(val) === -1;
}
};