如何在网页中实现用户输入替换代码关键词的交互功能

8次阅读

如何在网页中实现用户输入替换代码关键词的交互功能

本文介绍一种轻量级、无需后端的前端方案,帮助非编程人员快速为模板代码添加“关键词动态替换”功能:用户输入新词,点击按钮即可批量替换模板中所有指定关键词(如 character),并实时显示结果。

本文介绍一种轻量级、无需后端的前端方案,帮助非编程人员快速为模板代码添加“关键词动态替换”功能:用户输入新词,点击按钮即可批量替换模板中所有指定关键词(如 character),并实时显示结果。

在为 Episode 等互动小说平台提供可复用的脚本模板时,常需让用户将占位符(如 CHARACTER、LOCATION 或 SCENE_TITLE)替换成自己的内容。手动使用 Ctrl+F 替换不仅易出错,还降低用户体验。通过纯前端 JavaScript 即可轻松实现一键智能替换——无需服务器、不依赖框架,兼容所有现代浏览器。

核心实现逻辑

整个功能基于三步操作:

  1. 获取原始模板文本 (静态存储在页面中);
  2. 监听用户输入与按钮点击事件 (推荐使用 addEventListener,比内联 onclick 更规范、易维护);
  3. 执行全局、大小写敏感的字符串替换 ,并将结果实时渲染到目标区域。

以下是一个完整、开箱即用的示例代码:

<!-- HTML 结构 --> <input type="text" id="inp" placeholder=" 请输入要替换的词(如:莉亚)"> <button class="btnChange"> 生成定制代码 </button> <pre class="brush:php;toolbar:false;" id="output" style="background:#f5f5f5; padding:12px; border-radius:4px; overflow-x:auto;"> CHARACTER enters from left to screen center.   CHARACTER says, "This is my story."   The camera follows CHARACTER closely.
/* CSS:自动转为大写(提升一致性,可选)*/ #inp {text-transform: uppercase;   padding: 8px 12px;   border: 1px solid #ccc;   border-radius: 4px;   margin-right: 8px;} .btnChange {padding: 8px 16px;   background: #4CAF50;   color: white;   border: none;   border-radius: 4px;   cursor: pointer;} .btnChange:hover {background: #45a049;}
// JavaScript:核心替换逻辑 const btnChange = document.querySelector(".btnChange"); const inp = document.querySelector("#inp"); const output = document.querySelector("#output"); const originalContent = output.textContent; // ✅ 静态读取初始模板,避免重复获取  btnChange.addEventListener("click", () => {const replacement = inp.value.trim();   if (!replacement) {alert(" 请输入有效内容!");     return;   }   // 使用 replaceAll 实现全量替换(注意:IE 不支持,如需兼容旧版可用 split+join 替代)output.textContent = originalContent.replaceAll("CHARACTER", replacement); });

关键注意事项

  • 区分大小写 :replaceAll(“CHARACTER”, replacement) 严格匹配大写形式。若需忽略大小写,可改用正则表达式(例如 originalContent.replace(/character/gi, replacement)),但需确保语义合理(如 Character 和 character 是否应被同等替换)。
  • 防空输入 :添加 trim() 与空值校验,避免误替换为空字符串导致代码损坏。
  • 保留格式 :使用
     标签包裹输出区域,可原样保留缩进与换行;若需高亮语法,后续可集成 highlight.js 等轻量库。</li><li>⚠️ <strong> 安全性提醒 </strong>:此方案仅用于静态模板替换,<strong> 不执行、不解析、不渲染用户输入内容 </strong>,因此无 XSS 风险;切勿将用户输入直接插入 innerHTML 或 eval() 中。</li><li>? <strong> 扩展建议 </strong>:如需支持多关键词替换(如同时替换 CHARACTER、LOCATION、TIME),可设计多个输入框 + 对象映射,例如:<pre class="brush:php;toolbar:false;">const replacements = { CHARACTER: inp1.value, LOCATION: inp2.value}; let result = originalContent; Object.entries(replacements).forEach(([key, val]) => {result = result.replaceAll(key, val); }); output.textContent = result;

该方案简洁可靠,几分钟即可集成到任意静态网站中,特别适合创作者、教育者或模板分发者提升用户自助效率。只需复制粘贴上述代码片段,修改 CHARACTER 为你自己的占位符,并更新

 中的模板文本,即可上线使用。

text=ZqhQzanResources