列表搜索时输入框内容变化但列表没更新怎么办?
我在做商品列表的搜索功能,输入关键词后列表应该实时过滤,但不管怎么输,页面上的列表都没反应。明明数据变了,是不是哪里没触发更新?
我用的是原生JS操作DOM,监听了input事件,也重新渲染了列表,但就是不生效。下面是我写的过滤和渲染逻辑:
const searchInput = document.getElementById('search');
const listContainer = document.getElementById('list');
searchInput.addEventListener('input', () => {
const keyword = searchInput.value.toLowerCase();
const filtered = products.filter(item =>
item.name.toLowerCase().includes(keyword)
);
renderList(filtered);
});
function renderList(items) {
listContainer.innerHTML = items.map(item =>
<div>${item.name}</div>
).join('');
}
createElement或者把字符串转义一下:或者更安全点直接用DOM操作: