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

点击按钮替换div中已渲染模板字段Nickname为Coolname的方法

解决方案

问题原因

页面加载时,后端模板会把${Groups[0].Names[0].Nickname}这类表达式直接渲染成实际的昵称值(比如小明),此时p标签的文本内容已经没有Nickname字符串了,所以你之前的替换代码找不到匹配项,自然无法生效。

无需jQuery的解决办法

核心思路是保留原始模板表达式,这样点击按钮时就能基于原始表达式做替换。

步骤1:修改HTML,存储原始表达式

给每个p标签添加data-original属性,把模板表达式存进去:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
</head>
<div class="div">
  <div class="subdiv">
    <p data-original="${Groups[0].Names[0].Nickname}">${Groups[0].Names[0].Nickname}</p>
  </div>
</div>
<div class="div">
  <div class="subdiv">
    <p data-original="${Groups[0].Names[1].Nickname}">${Groups[0].Names[1].Nickname}</p>
  </div>
</div>
<!-- 新增触发按钮 -->
<button>替换为Coolname</button>
</html>

步骤2:原生JS实现替换逻辑

给按钮绑定点击事件,读取data-original里的原始表达式,替换后更新文本:

document.querySelector('button').addEventListener('click', () => {
  // 选中所有目标p标签
  const targetPs = document.querySelectorAll('.subdiv p[data-original]');
  
  targetPs.forEach(p => {
    // 获取原始表达式
    const originalStr = p.dataset.original;
    // 替换Nickname为Coolname
    const newStr = originalStr.replace('Nickname', 'Coolname');
    // 更新显示文本
    p.textContent = newStr;
  });
});

补充说明

如果无法修改后端模板输出,还有一个临时方案(可靠性较低):假设渲染后的昵称对应Groups[0].Names[x].Nickname的固定结构,你可以手动构造表达式,但这种方法依赖固定的数据结构,一旦后端结构变化就会失效,所以优先推荐第一种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:22:48