返回

特定日期显示火星漫游车照片时如何隐藏“无照片”消息?

javascript

用 JavaScript 在特定日期显示火星漫游车照片时隐藏“无照片”消息

问题:

当用户在日历控件中选择一个日期时,如果该日期没有火星漫游车拍摄的照片,我会在屏幕上输出一条消息,说明该日期没有照片。但是,如果用户选择了一个有照片的不同日期,即使有照片,屏幕上仍然会显示“在此日期没有火星漫游车拍摄的照片”的消息。

解决方案:

要解决此问题,需要在用户选择的特定日期有照片时从屏幕中删除“在此日期没有火星漫游车拍摄的照片”消息。以下步骤说明了如何实现此操作:

  1. 检查是否存在照片: 使用 JavaScript 代码检查所选日期是否有照片。

  2. 删除文本: 如果所选日期有照片,则从屏幕中删除文本“在此日期没有火星漫游车拍摄的照片”。

实施:

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);
  });
}

结论:

通过遵循这些步骤,可以确保在用户选择的特定日期有照片时,从屏幕中删除文本“在此日期没有火星漫游车拍摄的照片”。这将改善用户体验,提供更准确和用户友好的界面。

常见问题解答:

  1. 如何检查所选日期是否有照片?

    使用 JavaScript 代码,检查 data.photos 属性。如果该属性存在且其长度大于 0,则表示该日期有照片。

  2. 如何从屏幕中删除文本?

    使用 JavaScript 的 innerText 属性,可以从屏幕中删除文本。例如,document.querySelector('h4').innerText = "" 将删除 h4 元素中的所有文本。

  3. 如果用户选择了一个无效日期怎么办?

    应处理无效日期,并向用户提供错误消息。例如,如果用户输入了不存在的日期,可以显示一条消息,说明“该日期不存在”。

  4. 如何进一步改进此代码?

    此代码可以通过添加其他功能来改进,例如允许用户从下拉列表中选择不同的日期,或者显示有关所选照片的更多信息。

  5. 此解决方案适用于其他日期选择控件吗?

    此解决方案适用于任何日期选择控件,只要它允许访问所选日期。