特定日期显示火星漫游车照片时如何隐藏“无照片”消息?
2024-03-09 14:56:04
用 JavaScript 在特定日期显示火星漫游车照片时隐藏“无照片”消息
问题:
当用户在日历控件中选择一个日期时,如果该日期没有火星漫游车拍摄的照片,我会在屏幕上输出一条消息,说明该日期没有照片。但是,如果用户选择了一个有照片的不同日期,即使有照片,屏幕上仍然会显示“在此日期没有火星漫游车拍摄的照片”的消息。
解决方案:
要解决此问题,需要在用户选择的特定日期有照片时从屏幕中删除“在此日期没有火星漫游车拍摄的照片”消息。以下步骤说明了如何实现此操作:
-
检查是否存在照片: 使用 JavaScript 代码检查所选日期是否有照片。
-
删除文本: 如果所选日期有照片,则从屏幕中删除文本“在此日期没有火星漫游车拍摄的照片”。
实施:
document.querySelector('button').addEventListener('click', getFetch);
function getFetch() {
const choice = document.querySelector('input').value.trim();
if (!choice) {
console.error('No date selected');
return;
}
const apiKey = '[REDACTED]';
const url = `https://api.nasa.gov/mars-photos/api/v1/rovers/curiosity/photos?
earth_date=${choice}&api_key=${apiKey}`;
fetch(url).then(res => {
if (!res.ok) {
throw new Error('ERROR');
}
return res.json();
}).then(data => {
console.log(data);
if (data.photos && data.photos.length > 0) {
const photo = data.photos[0];
document.querySelector('.yo').src = photo.img_src;
document.querySelector('h3').innerText = photo.camera.full_name;
document.querySelector('h2').innerText = photo.earth_date;
document.querySelector('h4').innerText = "";
} else {
document.querySelector('h4').innerText = "There weren't any photos taken at this date with a
mars rover "
}
}).catch(err => {
console.error('Prob with fetch', err);
});
}
结论:
通过遵循这些步骤,可以确保在用户选择的特定日期有照片时,从屏幕中删除文本“在此日期没有火星漫游车拍摄的照片”。这将改善用户体验,提供更准确和用户友好的界面。
常见问题解答:
-
如何检查所选日期是否有照片?
使用 JavaScript 代码,检查
data.photos
属性。如果该属性存在且其长度大于 0,则表示该日期有照片。 -
如何从屏幕中删除文本?
使用 JavaScript 的
innerText
属性,可以从屏幕中删除文本。例如,document.querySelector('h4').innerText = ""
将删除h4
元素中的所有文本。 -
如果用户选择了一个无效日期怎么办?
应处理无效日期,并向用户提供错误消息。例如,如果用户输入了不存在的日期,可以显示一条消息,说明“该日期不存在”。
-
如何进一步改进此代码?
此代码可以通过添加其他功能来改进,例如允许用户从下拉列表中选择不同的日期,或者显示有关所选照片的更多信息。
-
此解决方案适用于其他日期选择控件吗?
此解决方案适用于任何日期选择控件,只要它允许访问所选日期。