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

HTML+JS实现文本域字母替换为输入框值功能失效求助

问题原因
  • 映射对象MapObj仅在脚本初始化阶段生成一次,后续修改INPUT1的值只会更新VarTest变量,不会同步更新MapObj.a的取值,导致替换逻辑一直使用页面加载时的初始空值
  • 对textarea赋值时错误使用innerHTML属性,应使用value属性避免特殊字符、换行符处理异常
  • 事件调用存在大小写笔误:textarea_up的onkeyup属性中写的是Refreshcool(),但实际定义的函数名为大写C的RefreshCool(),导致事件触发失效
  • 代码中存在大量未声明的全局变量,容易出现作用域混乱
修复方案

你可以直接使用如下调整后的代码:

<textarea id="textarea_up" onkeyup="handleUpdate()" type="text" name="filter_name" rows="10" cols="75"></textarea>
<textarea id="textarea_down" type="text" rows="10" cols="75" readonly></textarea> 
<br><br>
a = <input type="text" onkeyup="handleUpdate()" id="INPUT1" name="name" required minlength="4" maxlength="8" size="10">
<p id="ShowText"></p>
<script>
// 统一更新函数,避免多事件重复调用逻辑混乱
function handleUpdate() {
  const fieldUp = document.getElementById("textarea_up");
  const fieldDown = document.getElementById("textarea_down");
  const inputVal = document.getElementById("INPUT1").value;
  // 实时生成映射对象,确保取到INPUT1的最新值
  const mapObj = {
    a: inputVal,
    b: "beet"
  };
  // 替换逻辑
  const reg = new RegExp(Object.keys(mapObj).join("|"), "g");
  const result = fieldUp.value.replace(reg, matched => mapObj[matched]);
  // textarea赋值使用value属性
  fieldDown.value = result;
  // 同步更新ShowText展示
  document.getElementById("ShowText").innerHTML = inputVal;
}
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:15:03