javascript - 如何在搜索栏中设置默认搜索结果?
问题描述
我正在尝试使用 JavaScript 和 json 构建一个搜索栏。当任何访问者访问该页面时,我需要搜索栏显示一些默认搜索结果。我将值设置为搜索栏并尝试过,但在用户删除搜索字段内的文本之前没有搜索结果。每当有人访问该页面时,我如何显示默认或预定义的搜索结果。
const search = document.getElementById("search");
const matchList = document.getElementById("match-list");
const searchWorker = async (searchText) => {
const res = await fetch("workers.json");
const states = await res.json();
let matches = states.filter((state) => {
const regex = new RegExp(`${searchText}`, "gi");
return state.name.match(regex);
});
if (searchText.length === 0) {
matches = [];
matchList.innerHTML = "";
}
outputHtml(matches);
};
const outputHtml = (matches) => {
if (matches.length > 0) {
const html = matches
.map(
(match) => `<div class=" search-result">
<a href="${match.portfolio}">
${match.name} - ${match.age}<br/>
<small>Salery - ${match.salary}</small>
</a></div>
`
)
.join("");
matchList.innerHTML = html;
}
};
search.addEventListener("input", () => searchWorker(search.value));
<input id="search" type="search" value="sam" />
<div id="match-list"></div>
</div>
我的 json 文件:
[
{
"name": "sam",
"age": "26",
"salary": "20000",
"portfolio": "https://www.example.com/1"
},
{
"name": "tony",
"age": "30",
"salary": "30000",
"portfolio": "https://www.example.com/2"
},
{
"name": "sam",
"age": "24",
"salary": "15000",
"portfolio": "https://www.example.com/3"
}]
解决方案
只需searchWorker(search.value);
在顶层代码中运行该函数。像这样:
search.addEventListener("input", () => searchWorker(search.value));
searchWorker(search.value);
这将显示输入默认值的结果。
代码笔: https ://codepen.io/manaskandelwal1/pen/OJmXrMM
推荐阅读
- c# - 如何在 C# 中交换 XML 属性位置?
- python - 给定一个大小为 3 x 3 的矩阵 mat。找到位于每一行中的所有偶数,其最终累积和大于或等于 tO 150
- python - 如何重构我的代码以在 jinja 2 模板中呈现?
- wpf - 选择 TreeViewItem Header 时,TextBlock 内容变得不可见
- sorting - 所有 DAG 具有多个拓扑排序顺序的原因
- c# - Win32_Process 中的 PrivatePageCount 是什么?
- python - 如何使我可以始终使用单个scrapy蜘蛛绕过站点列表?
- ios - URLSession.shared.dataTask 冻结 UI
- c - 为什么这个打印 4 5 6 0 0 而不是 4 5 6 junk_value junk_value
- react-native - npm run android 没有在带有 react-native 的设备中打开