javascript - 根据输入值/ javascript过滤数组对象
问题描述
我正在尝试根据用户输入从数组列表中过滤我的对象,但我不确定如何实现这一点。
那是我的html:
<input id="search" type="text" placeholder="Search..">
<div id="animallist"></div>
javascript:
const animals = [{
name: "Cat",
useful: "no"
},
{
name: "Dog",
useful: "yes"
},
{
name: "Fish",
useful: "no"
}
]
animals.forEach(addLink);
function addLink(animal, i) {
const div = document.createElement('div');
const animalList = document.createElement('h2');
animalList.innerHTML = animal.name + " " +"-"+"useful?" + " "+ animal.useful;
animalList.style.cssText = "text-align:center;"
div.appendChild(animalList);
animallist.appendChild(div);
}
我不知道这是否可能,但我想这样做,所以它会实时过滤项目,所以如果我C
在搜索框中输入字母,那么它将消除数组列表中的其他 2 个项目并显示只有Cat
.
解决方案
您可以编辑您的addLink
to have div.dataset.animalName = animal.name;
,并添加以下代码:
search.addEventListener("keyup", function() {
Array.from(animallist.children).forEach(d => {
if (d.dataset.animalName.toLowerCase().indexOf(this.value.toLowerCase()) != -1) {
d.style.display = "block";
} else {
d.style.display = "none";
}
});
});
参考this fiddle。
推荐阅读
- mysql - 我无法从选择子查询中获取任何值
- api - 为什么虽然声明了linkedin grant_type?
- javascript - react.js indexDB大数据store.put性能问题
- php - 如何在另一个数组中插入关联数组?PHP
- oracle - C#/Dapper 将 XML CLOB 传递给 Oracle 存储过程导致 LPX-00210
- asp.net-core - 评级星级实施仅在第一条记录上适用于索引
- ruby - 如何检查 rake 任务是否在 Rails 上运行 ruby
- r - 找出 r 中两个列元素的 b/w 差异
- ruby-on-rails - 安装 Webpacker 后,Ruby on rails 5.2 崩溃
- android-studio - 如何在 RecyclerView 上使用 LiveData?