@iamvagl

Почему javascript не хочет читать функции?

658d875597aff599344534.png

Пробовал разные функции, search, includes и др. Никакие функции не хочет читать, пишет Uncaught TypeError: is not a function

window.onload = () => {
			let input = document.getElementById('input');
			input.oninput = function () {
				let list = document.querySelectorAll('.ul li');
				//let list = [...list];//
				let value = input.value.trim();
				if (value != '') {
					list.forEach(function () {
						if (list.findIndex(element => list.includes(value))) {

						}
					})
				}
			};
		}

код

<div class="search input-group" >
			<input type="search" name="" class="input__form" id="input" placeholder="Поиск товаров..">
			<ul class="ul list-group">
				<li id="item1" class="item4 list-group-item">TWS Apple Airpods Pro 1</li>
				<li id="item1" class="item4 list-group-item">TWS Apple Airpods Pro 1</li>
				<li id="item1" class="item4 list-group-item">TWS Apple Airpods Pro 1</li>
			</ul>
		</div>


Мне надо чтобы из введенного в поле input человеком, скрипт брал строку, искал эту строку в списке из 3 li, и есть такое значение есть, то все остается как было, а если нету, то добавляется класс .hide
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
IvanU7n
@IvanU7n
nothing interesting here
потому что querySelectorAll() возвращает не массив, а похожий на него объект (NodeList)
если нужен массив, нужно преобразовать вручную через Array.from()
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@iamvagl Автор вопроса
const input = document.getElementById('input');
			input.addEventListener('input', event => {
			    const value = event.target.value.trim().toLowerCase().toString();
			    document.querySelectorAll('.ul li').forEach(node => {
			        if (value !== '' && !node.textContent.toLowerCase().includes(value)) {
			        	node.classList.add('hide')
			        } else {
			        	node.classList.remove('hide');
			        }
			        if (value == '') {
			        	node.classList.add('hide');
			        }
			    });
			});


Окончательный код, кому нужен

<div class="search input-group" >
			<input type="search" name="" class="input__form" id="input" placeholder="Поиск товаров..">
			<ul class="ul list-group">
				<li id="item1" class="item4 list-group-item hide">TWS Apple Airpods Pro 1</li>
				<li id="item1" class="item4 list-group-item hide">TWS Apple Airpods Pro 2</li>
				<li id="item1" class="item4 list-group-item hide">TWS Apple Airpods Pro 3</li>
			</ul>
		</div>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы