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

如何避免JS文本输入框在添加新输入时内容被重置?

解决输入框添加时内容重置的问题

你猜的没错,用innerHTML +=拼接内容时,浏览器会把容器里的现有元素先转换成HTML字符串,再和新内容拼接,最后重新解析渲染整个容器的内容——这就相当于把原来的输入框都删了再重新创建一遍,自然会丢失之前输入的内容。

给你两种简单有效的解决方法:

方法一:用DOM API创建并添加元素

直接创建新的<br>和<input>节点,再追加到容器里,完全不影响原有元素:

document.getElementById("add").onclick = function(){
  // 创建换行标签
  const lineBreak = document.createElement('br');
  // 创建输入框
  const newInput = document.createElement('input');
  newInput.type = 'text';
  newInput.spellcheck = false;
  newInput.id = `b${nBox}`;
  newInput.className = 'eq';

  // 把元素添加到容器末尾
  const boxesContainer = document.getElementById("boxes");
  boxesContainer.appendChild(lineBreak);
  boxesContainer.appendChild(newInput);

  // 别忘了自增nBox,避免id重复
  nBox++;
}

方法二:用insertAdjacentHTML插入内容

这个方法可以在指定位置插入HTML片段,不会重新渲染整个容器,只会新增内容:

document.getElementById("add").onclick = function(){
  const boxesContainer = document.getElementById("boxes");
  // 在容器末尾插入新的HTML
  boxesContainer.insertAdjacentHTML('beforeend', `<br/><input type="text" spellcheck="false" id="b${nBox}" class="eq"/>`);
  nBox++;
}

两种方法都能保留之前输入框的内容,选哪种看你习惯就行,记得保证nBox每次点击都自增,不然新输入框的id会重复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:45:39