javascript - 如何使对象键的值成为用户在html中的输入搜索
问题描述
我有这个项目正在进行,其中涉及从 api 获取数据。
我希望用户自己搜索国家/地区,而不是我手动从代码中更改它。我如何做到这一点。
这是来自 api 的原始 json 数据的一部分;
{
"Country": "Algeria",
"CountryCode": "DZ",
"Slug": "algeria",
"NewConfirmed": 89,
"TotalConfirmed": 2718,
"NewDeaths": 9,
"TotalDeaths": 384,
"NewRecovered": 52,
"TotalRecovered": 1099,
"Date": "2020-04-21T22:13:21Z"
},
{
"Country": "American Samoa",
"CountryCode": "AS",
"Slug": "american-samoa",
"NewConfirmed": 0,
"TotalConfirmed": 0,
"NewDeaths": 0,
"TotalDeaths": 0,
"NewRecovered": 0,
"TotalRecovered": 0,
"Date": "2020-04-21T22:13:21Z"
},
{
"Country": "Andorra",
"CountryCode": "AD",
"Slug": "andorra",
"NewConfirmed": 4,
"TotalConfirmed": 717,
"NewDeaths": 1,
"TotalDeaths": 37,
"NewRecovered": 13,
"TotalRecovered": 248,
"Date": "2020-04-21T22:13:21Z"
},
{
"Country": "Angola",
"CountryCode": "AO",
"Slug": "angola",
"NewConfirmed": 0,
"TotalConfirmed": 24,
"NewDeaths": 0,
"TotalDeaths": 2,
"NewRecovered": 0,
"TotalRecovered": 6,
"Date": "2020-04-21T22:13:21Z"
},
{
"Country": "Anguilla",
"CountryCode": "AI",
"Slug": "anguilla",
"NewConfirmed": 0,
"TotalConfirmed": 0,
"NewDeaths": 0,
"TotalDeaths": 0,
"NewRecovered": 0,
"TotalRecovered": 0,
"Date": "2020-04-21T22:13:21Z"
},
{
"Country": "Antarctica",
"CountryCode": "AQ",
"Slug": "antarctica",
"NewConfirmed": 0,
"TotalConfirmed": 0,
"NewDeaths": 0,
"TotalDeaths": 0,
"NewRecovered": 0,
"TotalRecovered": 0,
"Date": "2020-04-21T22:13:21Z"
},
{
"Country": "Antigua and Barbuda",
"CountryCode": "AG",
"Slug": "antigua-and-barbuda",
"NewConfirmed": 0,
"TotalConfirmed": 23,
"NewDeaths": 0,
"TotalDeaths": 3,
"NewRecovered": 0,
"TotalRecovered": 3,
"Date": "2020-04-21T22:13:21Z"
},
{
"Country": "Argentina",
"CountryCode": "AR",
"Slug": "argentina",
"NewConfirmed": 102,
"TotalConfirmed": 2941,
"NewDeaths": 4,
"TotalDeaths": 136,
"NewRecovered": 28,
"TotalRecovered": 737,
"Date": "2020-04-21T22:13:21Z"
},
{
"Country": "Armenia",
"CountryCode": "AM",
"Slug": "armenia",
"NewConfirmed": 48,
"TotalConfirmed": 1339,
"NewDeaths": 2,
"TotalDeaths": 22,
"NewRecovered": 35,
"TotalRecovered": 580,
"Date": "2020-04-21T22:13:21Z"
这是我的代码。
国家是蛞蝓,我想让它成为用户从 html 中的搜索表单中自己搜索的东西。
})
fetch('url')
.then(function (response) {
return response.json();
})
.then(function (data) {
let country = data.Countries.filter((value) => value.Slug == 'nigeria')
appendData(country);
})
.catch(function (err) {
console.log(err);
});
})
解决方案
您可以利用datalist
HTML 元素
fetch('url')
.then(response => response.json())
.then(countries => {
const options = countries.reduce((c, {Country}) => c += `<option value="${Country}">`, '');
document.getElementById('country-list').innerHTML = options;
});
<label for="country">Country: </label>
<input type="text" list="country-list" id="country">
<datalist id="country-list"></datalist>
推荐阅读
- java - 我应该如何通过使用 Getters 方法从 JSP 调用 javaclass 方法来获取数据?
- azure-ad-b2c - B2C ClaimsTransformation AddItemToStringCollection / StringJoin
- javascript - 如何从 localStorage 中删除项目()?
- java - 在 Quarkus 中使用 @Inject 和接口进行依赖注入
- reactjs - 无法删除材料 ui appBar 中的边距并在单击时更改菜单项的外观
- python - 为什么我在提交烧瓶表单时出错?
- c# - 重命名 DbContext 类失去与现有迁移/模型快照的关联
- kubernetes - 如何在不清除文件夹的情况下挂载包含 ConfigMap 键/值内容的文件?
- c++ - 统一缓冲区的 Vulkan 内存对齐
- wordpress - bbpress 编辑和回复页面显示空白页面