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

HTML+JS实现表格新增行后刷新页面丢失问题如何解决?

问题原因

你当前的所有表格数据都只保存在JS运行时的内存变量里,页面刷新后JS上下文会完全重置,新增的行数据自然就消失了。另外你代码里的n.preventDefault()和x.preventDefault()是无效写法,n和x都是数字类型变量,没有preventDefault方法,直接删除即可。

解决方案

使用浏览器自带的localStorage做本地持久化存储,每次新增行后把所有表格数据同步存入localStorage,页面加载时主动读取localStorage里的存储数据,自动渲染到表格中。

修改后的完整代码

JS代码

// 页面加载完成后初始化渲染已存储的数据
window.onload = function() {
  renderSavedData()
}

// 读取本地存储的表格数据渲染到页面
function renderSavedData() {
  const savedData = localStorage.getItem('footballTableData')
  if (!savedData) return
  const tableData = JSON.parse(savedData)
  const table = document.getElementById('show')
  tableData.forEach((item, index) => {
    const newRow = table.insertRow(index + 1)
    Object.values(item).forEach(val => {
      const cell = newRow.insertCell()
      cell.innerHTML = val
    })
  })
}

function AddRow() {
  // 读取表单输入的值
  const rowData = {
    kamp: document.getElementById("kamp").value,
    hjemmelag: document.getElementById("hjemmelag").value,
    resultat: document.getElementById("resultat").value,
    bortelag: document.getElementById("bortelag").value,
    gHjemme: document.getElementById("gHjemme").value,
    rHjemme: document.getElementById("rHjemme").value,
    gBorte: document.getElementById("gBorte").value,
    rBorte: document.getElementById("rBorte").value
  }

  // 插入新行到表格
  const table = document.getElementById('show')
  const newRow = table.insertRow(table.rows.length)
  Object.values(rowData).forEach(val => {
    const cell = newRow.insertCell()
    cell.innerHTML = val
  })

  // 同步更新本地存储
  const savedData = localStorage.getItem('footballTableData')
  const tableData = savedData ? JSON.parse(savedData) : []
  tableData.push(rowData)
  localStorage.setItem('footballTableData', JSON.stringify(tableData))

  // 可选:新增后清空输入框
  document.querySelectorAll('input[type="text"]').forEach(input => input.value = '')
}

HTML代码

你原有的HTML代码无需修改,替换掉原有的JS代码即可。如果需要清空本地存储的测试数据,可在浏览器控制台执行localStorage.removeItem('footballTableData')。

补充说明

如果需要多设备同步数据或者永久存储不随浏览器缓存清除丢失,需要把数据提交到后端服务器存入数据库,前端调用接口读取数据渲染即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:15:09