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

如何用JavaScript创建数组图片画廊?循环重复显示问题求助

解决画廊循环显示重复图片的问题

你的问题出在for循环里没有读取数组中存储的图片地址,而是一直使用当前的img.src,所以不管数组里有多少张图,都会重复显示同一张。

错误原因分析

这段循环代码里,你每次输出的都是同一个img.src的值:

for(i = 0; i < data.length; i++) {
  document.write(`<img src="${img.src}" class="xxx"/>`);
}

而数组data里每个元素都存储了对应的图片地址,你需要遍历数组,取出每个元素的img属性值。

修正后的代码

把循环里的img.src替换成data[i].img,就能正确遍历显示所有存储的图片:

let newData = {
    img: img.src
  },
  data = sessionStorage.getItem("data") ? JSON.parse(sessionStorage.getItem("data")) : [];

// 更新数据
data = [...data, newData];

// 保存到sessionStorage
sessionStorage.setItem("data", JSON.stringify(data));

// 遍历数组显示图片
for(let i = 0; i < data.length; i++) {
  // 这里改用data[i].img获取数组中对应项的图片地址
  document.write(`<img src="${data[i].img}" class="xxx"/>`);
}

额外优化建议

尽量避免使用document.write,可以通过DOM操作来添加图片元素,比如:

// 假设页面上有一个id为gallery的容器
const gallery = document.getElementById('gallery');
for(let i = 0; i < data.length; i++) {
  const imgElement = document.createElement('img');
  imgElement.src = data[i].img;
  imgElement.className = 'xxx';
  gallery.appendChild(imgElement);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:05:23