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

Enjin站点修改图片src路径报错:Cannot read property 'replace' of undefined

问题分析与解决方案

嗨,我帮你找到问题所在啦!你遇到的Cannot read property 'replace' of undefined报错,核心原因是混淆了原生DOM元素和jQuery对象的用法——jQuery包装后的对象不能直接访问src属性,这才导致了undefined的错误。

错误根源拆解

你代码里写的$(this).src是错误的:$(this)返回的是jQuery对象,而src是原生DOM元素的属性,直接访问会得到undefined,自然没法调用replace方法。

修正后的代码

把你那段修改图片src的代码改成下面这样,就能正常工作了:

$(window).on("load", function() {
  // 建议不要全局选所有img,精准定位到奖项模块的图片更稳妥
  $(".m_members img").each(function() {
    // 用jQuery的attr方法获取和设置src属性
    let oldSrc = $(this).attr("src");
    if (oldSrc) { // 先判断src是否存在,避免空值报错
      let newSrc = oldSrc.replace("/small/", "/large/");
      $(this).attr("src", newSrc);
    }
  });
});

额外优化建议

  • 精准选择图片:全局$("img")会修改页面所有图片,可能影响其他模块,加上奖项模块的父容器选择器(比如.m_members img),只处理目标图片更安全。
  • 增加有效性判断:if (oldSrc)的判断能避免部分图片无src属性时再次报错。
  • 使用新的事件绑定方式:jQuery里.bind()是旧方法,推荐用.on()来绑定事件,兼容性和性能更好。

完整修正后的全部代码

替换成下面这段完整代码即可:

$( document ).ready(function() {
  $( "#memberBlock" ).insertAfter( "#page" );
  $( "#memberContainer" ).append($("div.m_members"));

  // 修正后的图片批量替换逻辑
  $(window).on("load", function() {
    $(".m_members img").each(function() {
      let oldSrc = $(this).attr("src");
      // 只替换包含/small/路径的图片,避免误改其他图片
      if (oldSrc && oldSrc.includes("/small/")) {
        let newSrc = oldSrc.replace("/small/", "/large/");
        $(this).attr("src", newSrc);
      }
    });
  });
});

这样应该就能顺利把所有奖项图片的小图路径替换成大图路径,正常显示大图啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:06:19