Нельзя точно сказать по одной строке. Чтобы помочь — нужно увидеть HTML + JS, где вы делаете фильтрацию, и понять ожидаемое поведение. Ниже — краткий чеклист типичных причин и способы отладки + простые рабочие примеры фильтрации.
Что проверить сразу
- Откройте консоль браузера (F12) — есть ли ошибки JS? Если есть — исправьте их сначала.
- Скрипт подключён после DOM-элементов или исполняется на DOMContentLoaded / $(document).ready. Частая ошибка: скрипт выполняется до создания элементов.
- Селектор совпадает с элементом: проверьте document.querySelector / $(...) возвращает элемент(ы).
- Событие не вешается на динамически добавленные элементы — используйте делегирование (.on в jQuery) или вешайте после вставки.
- Сравнение типов: сравниваете строку с числом? Приведите типы (parseInt/Number или toString()).
- Пробелы/регистр: делайте .trim().toLowerCase() при сравнениях текста.
- Регулярные выражения: экранируйте спецсимволы в вводе.
- Форма сабмитится и страница перезагружается — отмените e.preventDefault() или используйте type="button".
- Если фильтрация серверная — проверьте Network (запросы, параметры, ответ).
- Кеширование: если вы фильтруете клон элемента, убедитесь, что меняете именно те DOM-элементы, которые видны.
Как отлаживать
- Добавьте console.log: в обработчик события, показывайте ввод и список сравниваемых значений.
- Упростите задачу до минимального примера (несколько строк таблицы / массива).
- Пошагово комментируйте/восстанавливайте куски кода, чтобы локализовать ошибку.
Примеры
1) Простой фильтр таблицы (vanilla JS)
<script>
document.addEventListener('DOMContentLoaded', () => {
const input = document.getElementById('filter');
input.addEventListener('input', () => {
const q = input.value.trim().toLowerCase();
document.querySelectorAll('#myTable tbody tr').forEach(row => {
const text = row.textContent.toLowerCase();
row.style.display = text.includes(q) ? '' : 'none';
});
});
});
</script>
2) То же на jQuery
<script>
$(function(){
$('#filter').on('input', function(){
const q = $(this).val().trim().toLowerCase();
$('#myTable tbody tr').each(function(){
const text = $(this).text().toLowerCase();
$(this).toggle(text.indexOf(q) !== -1);
});
});
});
</script>
Если ничего не помогает — пришлите:
- HTML + JavaScript (минимальный воспроизводимый пример),
- что вы ожидаете и что происходит вместо этого (ошибка в консоли, ничего не происходит, фильтруются не те элементы и т.п.),
- используемые библиотеки/версии (jQuery, framework).
Склейте код сюда — быстро укажу на причину и исправление.