首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何只返回结果?

如何只返回结果?
EN

Stack Overflow用户
提问于 2021-08-13 00:00:06
回答 1查看 35关注 0票数 1

我只想返回与输入值匹配的数据。

但在这段代码中,结果将追加到数据之后。

我被list.append(div);卡住了

代码语言:javascript
复制
const list = document.querySelector(".list");
const filterInput = document.querySelector("#filter-input");
const data = [{name: "abc"}, {name: "adb"}, {name: "cab"}];

renderData(data)

function renderData(data) {
    data.forEach(item => {
        const div = document.createElement("div");
        div.setAttribute("class", "item");
        div.innerHTML = `<div class="name">${item.name}</div>`;
        list.append(div);
    })
}

filterInput.addEventListener("input", e => {
    const keyword = e.target.value;
    let filteredData = data.filter(item => {
        return item.name.includes(keyword);
    });

    renderData(filteredData);
})
代码语言:javascript
复制
<input type="text" id="filter-input">
<div class="list"></div>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-13 00:00:59

渲染时清除列表的innerHTML以删除先前附加的元素:

代码语言:javascript
复制
const list = document.querySelector(".list");
const filterInput = document.querySelector("#filter-input");
const data = [{name: "abc"}, {name: "adb"}, {name: "cab"}];

renderData(data)

function renderData(data) {
    list.innerHTML = ""; //<-- clear innerHTML, remove appended elements
    data.forEach(item => {
        const div = document.createElement("div");
        div.setAttribute("class", "item");
        div.innerHTML = `<div class="name">${item.name}</div>`;
        list.append(div);
    })
}

filterInput.addEventListener("input", e => {
    const keyword = e.target.value;
    let filteredData = data.filter(item => {
        return item.name.includes(keyword);
    });

    renderData(filteredData);
})
代码语言:javascript
复制
<input type="text" id="filter-input">
<div class="list"></div>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68765368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档