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

JavaScript addEventListener点击事件问题:点击仅生效一次

问题分析与解决

问题出在浏览器缓存机制:当你设置img.src = "https://picsum.photos/200/300"后,第一次点击浏览器会请求并缓存该图片;后续点击时,因为URL完全相同,浏览器直接读取缓存内容,不会向服务器请求新图片,所以看起来只切换了一次。

解决办法很简单,给picsum的URL添加一个随机参数,让每次请求的URL都不一样,绕过浏览器缓存:

修改后的代码:

const img = document.createElement("img");

img.src = "https://cdn.pixabay.com/photo/2024/02/05/03/10/sun-8553511_1280.jpg";
img.style.width = "300px";

document.body.appendChild(img);

img.addEventListener("click", function() {
  // 用时间戳作为随机参数,确保每次URL唯一
  img.src = `https://picsum.photos/200/300?${Date.now()}`;
});

也可以用Math.random()生成随机数作为参数,效果一样:

img.src = `https://picsum.photos/200/300?${Math.random()}`;

这些参数不会影响picsum返回图片,只是告诉浏览器这是新资源,每次都会去服务器拉取新的随机图片。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:39:52