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

JS表单新增内容时列表重复渲染旧条目问题求助

问题原因
  • 你的clicker函数每次触发时,都会全量遍历整个leadTracker数组,并且直接通过+=往列表DOM的innerText后追加内容,没有先清空上一次渲染的旧内容,所以每次新增条目都会把之前所有的历史条目再重复渲染一遍。

测试场景复现逻辑:
第一次提交bro:数组为['bro'],列表渲染后内容为bro
第二次提交back:数组为['bro', 'back'],函数先追加bro再追加back,最终内容变成brobroback,即你观察到的重复现象。

修复方案

提供两种可选修复方式:

方案1:渲染前清空旧内容(改动最小,适合数据量小的场景)

修改clicker函数,每次循环渲染前先清空列表的已有内容:

function clicker() {
  // 清空上一次渲染的所有内容
  Listing.innerText = ''
  for (let i = 0; i < leadTracker.length; i++) {
    // 末尾加换行符区分不同条目
    Listing.innerText += leadTracker[i] + '\n'
    console.log(leadTracker)
  }
}

方案2:仅追加新条目(性能更优,无需每次重渲全量数据)

不需要遍历整个数组,每次提交时仅把新增内容追加到列表末尾即可,还可以新增空值校验避免无效提交:

inputButton.addEventListener("click", function () {
  const inputVal = inputText.value.trim()
  // 过滤空内容提交
  if (!inputVal) return
  leadTracker.push(inputVal)
  // 直接追加新内容,无需调用全量渲染的clicker函数
  Listing.innerText += inputVal + '\n'
  console.log(leadTracker)
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:45:03