Javascript 输入无效的城市会导致UI中没有任何事情发生,并且控制台中会出现错误

Javascript 输入无效的城市会导致UI中没有任何事情发生,并且控制台中会出现错误,javascript,Javascript,const key='7KJWWL6SBK8YIRY5CSTCQXH1AKYUZK6'; //获取天气信息 const getWeather=async(id)=>{ 常数基https://dataservice.accuweather.com/currentconditions/v1/'; const query=`${id}?apikey=${key}`; const response=wait fetch(base+query); const data=wait response.json

const key='7KJWWL6SBK8YIRY5CSTCQXH1AKYUZK6';
//获取天气信息
const getWeather=async(id)=>{
常数基https://dataservice.accuweather.com/currentconditions/v1/';
const query=`${id}?apikey=${key}`;
const response=wait fetch(base+query);
const data=wait response.json();
返回数据[0];
};
//获取城市信息
const getCity=async(城市)=>{
常数基https://dataservice.accuweather.com/locations/v1/cities/search';
const query=`?apikey=${key}&q=${city}`;
const response=wait fetch(base+query);
const data=wait response.json();
返回数据[0];
};
const cityForm=document.querySelector('form');
const card=document.querySelector(“.card”);
const details=document.querySelector('.details');
常量时间=document.querySelector('img.time');
const icon=document.querySelector('.icon img');
const updateUI=(数据)=>{
控制台日志(数据);
const citydes=data.citydes;
const weather=data.weather;
//更新详细信息模板
details.innerHTML=`
${cityDets.EnglishName}
${weather.WeatherText}
${weather.Temperature.Metric.Value}
&摄氏度
`;
//更新夜间/白天和图标imgs
const iconsc=`scripts/icons/${weather.WeatherIcon}.svg`;
icon.setAttribute('src',iconSrc);
设timesrc=null;
if(天气,IsDayTime){
timeSrc='scripts/day.svg';
}否则{
timeSrc=“scripts/night.svg”;
}
setAttribute('src',timeSrc);
//删除d-none类(如果存在)
if(card.classList.contains('d-none')){
card.classList.remove('d-none');
}
};
const updateCity=async(城市)=>{
const citydes=等待获取城市(城市);
const weather=wait getWeather(citydes.Key);
返回{
cityDets:cityDets,
天气:天气
};
};
cityForm.addEventListener('submit',e=>{
//防止默认操作
e、 预防默认值();
//获取城市价值
const city=cityForm.city.value.trim();
cityForm.reset();
//使用新城市更新ui
更新(城市)
.然后(数据=>updateUI(数据))
.catch(err=>console.log(err));
});
正文{
背景#ffffff88;
字母间距:0.2米;
字号:0.8em;
}
.集装箱{
最大宽度:400px;
}
.图标{
位置:相对位置;
顶部:-50px;
边界半径:50%;
宽度:100px;
边缘底部:-50px;
}
h1{
字体系列:“Mansalva”,草书;
字体大小:50px;
}
标签{
字体大小:15px;
}

天气忍者
天气忍者
输入天气信息的位置
城市名称
天气状况
临时雇员
&度;C

我可以看到错误记录在下面的行中

 //update the ui with new city
        updateCity(city)
          .then(data => updateUI(data))
          .catch(err => console.log(err));
这将作为信息记录在浏览器控制台中。如果要将其作为错误日志,请尝试使用控制台。错误(err)

请尝试此代码段以查看控制台语句是否已打印。刚刚将
console.log(err)
更改为
console.log(err.message)
,因为SO代码段控制台似乎不能很好地处理错误对象

const key='TxdgOemczF6OGu7F7mMVFtHkGDcKF8W3';
//获取天气信息
const getWeather=async(id)=>{
常数基https://dataservice.accuweather.com/currentconditions/v1/';
const query=`${id}?apikey=${key}`;
const response=wait fetch(base+query);
const data=wait response.json();
返回数据[0];
};
//获取城市信息
const getCity=async(城市)=>{
常数基https://dataservice.accuweather.com/locations/v1/cities/search';
const query=`?apikey=${key}&q=${city}`;
const response=wait fetch(base+query);
const data=wait response.json();
返回数据[0];
};
const cityForm=document.querySelector('form');
const card=document.querySelector(“.card”);
const details=document.querySelector('.details');
常量时间=document.querySelector('img.time');
const icon=document.querySelector('.icon img');
常量updateErrorUI=()=>{
details.innerHTML=`未找到数据';
if(card.classList.contains('d-none')){
card.classList.remove('d-none');
}
}
const updateUI=(数据)=>{
控制台日志(数据);
const citydes=data.citydes;
const weather=data.weather;
//更新详细信息模板
details.innerHTML=`
${cityDets.EnglishName}
${weather.WeatherText}
${weather.Temperature.Metric.Value}
&摄氏度
`;
//更新夜间/白天和图标imgs
const iconsc=`scripts/icons/${weather.WeatherIcon}.svg`;
icon.setAttribute('src',iconSrc);
设timesrc=null;
if(天气,IsDayTime){
timeSrc='scripts/day.svg';
}否则{
timeSrc=“scripts/night.svg”;
}
setAttribute('src',timeSrc);
//删除d-none类(如果存在)
if(card.classList.contains('d-none')){
card.classList.remove('d-none');
}
};
const updateCity=async(城市)=>{
const citydes=等待获取城市(城市);
const weather=wait getWeather(citydes.Key);
返回{
cityDets:cityDets,
天气:天气
};
};
cityForm.addEventListener('submit',e=>{
//防止默认操作
e、 预防默认值();
//获取城市价值
const city=cityForm.city.value.trim();
cityForm.reset();
//使用新城市更新ui
更新(城市)
.然后(数据=>updateUI(数据))
.catch(错误=>{
控制台日志(错误消息);
updateErrorUI();
}
);
});

天气忍者
天气忍者
输入天气信息的位置
城市名称
天气状况
临时雇员
&度;C