【发布时间】:2020-07-11 11:15:15
【问题描述】:
我正在制作一个简单的搜索自动填充应用程序,用于搜索城市及其信息。
问题是当点击建议时,我希望在不同的 html 元素中显示城市信息。
所以我的 javascript 代码是:
let search=document.getElementById("search");
let searchlist=document.getElementById("searchlist");
search.addEventListener("input",()=>searchcities(search.value));
const searchcities=async searchtext=>{
var res= await fetch("in.json");
const cities=await res.json();
let matches=cities.filter(city=>{
const regex=new RegExp(`^${searchtext}`,'gi');
return city.city.match(regex);
});
if(searchtext.length===0){
matches=[];
searchlist.innerHTML="";
}
outputHTML(matches);
};
function outputHTML(matches){
if(matches.length>0){
const html=matches.map(match=>`
<button class="card" >
<h4>${match.city}<span class="state ">(${match.admin})</span></h4>
<small>Latitude: ${match.lat}<br>longitude:${match.lng}</small>
</button>
`).join("");
searchlist.innerHTML=html;
document.querySelector(".card").addEventListener("click",showresult)
function showresult(match){
let result=document.querySelector("#finalresult");
const show=`
<div class="result">
<h4>${match.city}<span class="state ">(match.admin})</span></h4>
<small>Latitude: ${match.lat}<br>longitude:${match.lng}</small>
</div>
`;
result.innerHTML=show;
console.log(result);
}
}
}
我希望这个功能起作用:
function showresult(match){
let result=document.querySelector("#finalresult");
const show=`
<div class="result">
<h4>${match.city}<span class="state ">(match.admin})</span></h4>
<small>Latitude: ${match.lat}<br>longitude:${match.lng}</small>
</div>
`;
result.innerHTML=show;
console.log(result);
}
}
但它给了我未定义的数据。我不知道该怎么办。
json文件的结构是这样的:
{ “城市”:“孟买”, “管理员”:“马哈拉施特拉邦”, “国家”:“印度”, "population_proper": "12691836", “iso2”:“输入”, “资本”:“管理员”, “纬度”:“18.987807”, “液化天然气”:“72.836447”, “人口”:“18978000” }
感谢您的帮助。
【问题讨论】:
-
请在其中包含一个 json 示例。
-
什么未定义的数据?
-
@PaulT。 undefined 是值。如城市名称、管理员名称等。
-
showresult(match.admin 行)中有一些错字,但这不是您的代码返回未定义的原因。问题在于您职能的另一部分。如果您只是对您的代码进行单元测试,您会注意到它提供了正确的值(在错字之外):
showresult({"city": "Mumbai", "admin": "Maharashtra", "country": "India", "population_proper": "12691836", "iso2": "IN", "capital": "admin", "lat": "18.987807", "lng": "72.836447", "population": "18978000"}); -
问题你是如何测试你的代码的?您使用的是 IDE 还是正确设置了本地主机。获取请求需要导入 json 文件的权限。
标签: javascript html json fetch