You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

网站搜索功能故障:新查询时无法清除旧搜索结果求助

解决搜索结果不清空的问题

你的问题核心是清空旧结果的时机不对——你需要在发起API请求之前就执行清空操作,而不是等到请求返回后再处理。如果把清空逻辑放在then回调里,一旦请求失败,旧结果就会保留下来。

修改步骤:

  1. 提前获取结果容器的DOM引用,避免重复查询DOM浪费性能
  2. 在每次触发搜索时,先清空容器再发起请求
  3. 补充必要的输入验证和错误处理

修改后的完整代码示例:

// 获取DOM元素
const searchBtn = document.getElementById('search');
const input = document.getElementById('TVShowName');
const resultContainer = document.querySelector('.TVShowInfo');

// 绑定搜索点击事件
searchBtn.addEventListener('click', () => {
  const TVShow = input.value.trim();
  if (!TVShow) return; // 空输入不发起无效请求

  // 关键:发起请求前先清空旧结果
  resultContainer.innerHTML = '';

  fetch(`https://api.tvmaze.com/search/shows?q=${TVShow}`)
    .then((response) => response.json())
    .then((data) => {
      for (const value of data) {
        resultContainer.insertAdjacentHTML('beforeend',
          `<div class="TVShow"> <!-- 注意:不要用重复ID,改成class -->
             <center>
               <h1>${value.show.name}</h1>
             </center>
           </div>`);
      }
    })
    .catch(err => {
      console.error('请求出错:', err);
      resultContainer.innerHTML = '<p>搜索失败,请稍后重试</p>';
    });
});

额外注意点:

  • 循环生成的元素不要用重复的id="TVShow",ID必须唯一,换成class="TVShow"更合理
  • 增加输入验证可以避免空字符串触发无效请求
  • 加入错误捕获能在API请求失败时给用户反馈

内容的提问来源于stack exchange,提问作者OCS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 23:25:59