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

点击按钮刷新随机图片避免堆叠的前端实现问题

问题原因

你当前的displayData函数每次执行都会创建新的<img>元素,通过appendChild方法追加到gridDiv容器末尾,所以每次点击都会新增一张图片而不是替换原有内容。

解决方法

提供两种常用实现方案,按需选择即可:

方案1:插入新图片前清空容器内容

只需要修改displayData函数,在插入新图片前清空gridDiv的原有子元素:

function displayData(apiResponse, divid){
    let gridDiv = document.getElementById("gridDiv");
    // 清空容器内所有现有内容
    gridDiv.innerHTML = '';
    const imageDiv = document.createElement("img");
    imageDiv.id = "Pic";
    imageDiv.src = apiResponse[0]['url'];
    gridDiv.appendChild(imageDiv);
}

方案2:提前预留img标签,直接修改src属性(性能更优)

不需要重复创建DOM元素,直接修改已有图片的资源地址即可:

  • 第一步:修改HTML,在gridDiv里预先放好img标签
<div class="container"> 
    <div class="data-grid-container" id="gridDiv">
        <!-- 提前预留img标签,初始可以不写src或者放占位图 -->
        <img id="Pic" alt="随机图片">
    </div>
</div>
  • 第二步:修改JS的displayData函数,直接修改src
function displayData(apiResponse, divid){
    // 直接获取已有的img元素修改地址即可,不需要新建和追加
    const imageDiv = document.getElementById("Pic");
    imageDiv.src = apiResponse[0]['url'];
}

另外你现有HTML代码里的按钮标签少了闭合的>,可以顺手修正:

<button type="button" class=" btn btn-success" id="Button" onclick="loadImage('https://apicall###')">
  Load Random Pictures!
</button>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:51:03