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

搜索新内容时如何清除API返回的已展示图片?

解决剧集搜索页面重复追加图片的问题

当前问题:首次搜索展示图片后,再次搜索新内容时,旧图片不会被删除,新图片会追加在旧图片之后。需求是每次搜索仅显示当前结果的图片。


方案一:使用专用容器管理搜索结果(推荐)

这种方式通过独立容器存放所有搜索结果图片,既能精准清空旧内容,也能避免影响页面其他元素。

1. 修改HTML结构

在表单下方添加一个用于存放图片的容器:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>TV Show Search</title>
    <script src="https://cdn.jsdelivr.net/npm/axios@1.1.2/dist/axios.min.js"></script>
</head>
<body>
    <h1>TV Show Search</h1>
    <form id="searchForm">
        <input type="text" placeholder="TV Show title" name="query">
        <button>Search</button>
    </form>
    <!-- 新增结果容器 -->
    <div id="resultsContainer"></div>
    
    <script src="app.js"></script>
</body>
</html>

2. 更新JavaScript代码

修改逻辑,每次搜索前清空容器,并将新图片添加到容器中:

const form = document.querySelector('#searchForm');
const resultsContainer = document.querySelector('#resultsContainer');

form.addEventListener('submit', async function(e) {
    e.preventDefault();
    const searchTerm = form.elements.query.value;
    const config = { params: { q: searchTerm } };
    const res = await axios.get('https://api.tvmaze.com/search/shows', config);
    
    form.elements.query.value = '';
    // 清空旧结果
    resultsContainer.innerHTML = '';
    makeImages(res.data);
});

const makeImages = (shows) => {
    for (let result of shows) {
        if (result.show.image) {
            const img = document.createElement('IMG');
            img.src = result.show.image.medium;
            resultsContainer.append(img);
        }
    }
};

方案二:直接删除页面中的旧图片

如果不想修改HTML,可以在每次搜索前删除页面上所有之前生成的剧集图片:

const form = document.querySelector('#searchForm');

form.addEventListener('submit', async function(e) {
    e.preventDefault();
    const searchTerm = form.elements.query.value;
    const config = { params: { q: searchTerm } };
    const res = await axios.get('https://api.tvmaze.com/search/shows', config);
    
    form.elements.query.value = '';
    // 删除所有已存在的图片
    document.querySelectorAll('img').forEach(img => img.remove());
    
    makeImages(res.data);
});

const makeImages = (shows) => {
    for (let result of shows) {
        if (result.show.image) {
            const img = document.createElement('IMG');
            img.src = result.show.image.medium;
            document.body.append(img);
        }
    }
};

注意:方案二会删除页面上所有<img>元素,如果页面存在其他图片(如logo),会被误删,因此优先推荐方案一。

内容的提问来源于stack exchange,提问作者Arash Peer Mohammad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:40:23