答案:使用原生html和javaScript监听输入框,通过事件监听与dom操作实现动态筛选列表。1. 创建搜索输入框与列表;2. 用addEventListener监听input事件;3. 获取输入值并转小写,遍历列表项匹配文本内容,显示匹配项、隐藏不匹配项;4. 可优化防抖、空值显示全部、多关键词匹配及无结果提示。

要实现一个简单的过滤搜索功能,只需使用原生 HTML、javascript 监听输入框内容,并动态筛选列表项。不需要复杂的框架,通过事件监听和 DOM 操作就能完成。
1. 基础 HTML 结构
创建一个输入框用于搜索,以及一个待筛选的列表:
<input type="text" id="searchInput" placeholder="输入关键词搜索..."> <ul id="itemList"> <li>苹果</li> <li>香蕉</li> <li>橙子</li> <li>葡萄</li> <li>草莓</li> </ul>
2. 添加输入监听(JavaScript)
使用 addEventListener 监听输入框的 “input” 事件,每当用户输入内容时触发筛选逻辑:
const searchInput = document.getElementById('searchInput'); const itemList = document.getElementById('itemList'); const listItems = itemList.getElementsByTagName('li'); searchInput.addEventListener('input', function() { const filter = searchInput.value.toLowerCase(); for (let i = 0; i < listItems.length; i++) { const item = listItems[i]; const text = item.textContent.toLowerCase(); if (text.includes(filter)) { item.style.display = ''; } else { item.style.display = 'none'; } } });
3. 筛选逻辑说明
上面代码的核心是:
立即学习“前端免费学习笔记(深入)”;
- 获取用户输入的内容并转为小写,避免大小写不匹配
- 遍历每一个列表项,检查其文本是否包含搜索关键词
- 匹配的显示(display = ”),不匹配的隐藏(display = ‘none’)
这种方案响应快,适合小型数据列表。如果列表项带有额外属性(如 data-tags),也可以扩展匹配范围。
4. 可选优化建议
提升用户体验的小技巧:
- 添加防抖(debounce)避免频繁触发,尤其在大数据量时
- 搜索为空时显示全部列表项
- 支持多关键词或标签匹配,通过 data 属性增强筛选能力
- 加入“未找到结果”提示,当所有项都被隐藏时显示提示信息
基本上就这些,不复杂但很实用。


