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

如何将表单提交保存为对象数组并在另一页面展示,避免数据覆盖?

学生注册表多数据存储与展示解决方案

当前代码每次提交新学生信息时会覆盖之前的存储内容,原因是直接将单个学生对象存入localStorage的form键中。要实现多条数据的保存与展示,需要将数据以数组形式存储,每次提交时先读取已有数据,再将新数据追加进去,最后重新存入localStorage。

表单提交页修改后代码

const form = document.querySelector('form');

form.addEventListener('submit', (e) => {
    e.preventDefault();
    const fd = new FormData(form);
    const newStudent = Object.fromEntries(fd);

    // 读取已有学生列表,若无数据则初始化空数组
    let students = JSON.parse(localStorage.getItem('students')) || [];
    // 追加新学生数据
    students.push(newStudent);
    // 将更新后的数组存入localStorage
    localStorage.setItem('students', JSON.stringify(students));

    window.location.href = "allStudents.html";
})

目录页修改后代码

// 读取存储的学生列表数组
const students = JSON.parse(localStorage.getItem('students')) || [];

const container = document.getElementById('paragraph');
// 遍历每个学生对象,生成对应的展示内容
students.forEach(student => {
    let studentMarkup = '<div class="student-item">';
    // 遍历单个学生的所有属性
    for (const key in student) {
        studentMarkup += `<span>${key}: ${student[key]}</span><br>`;
    }
    studentMarkup += '</div>';
    container.innerHTML += studentMarkup;
})

改动说明

  • 存储结构变更:将原来的单个对象存储改为数组存储,键名从form改为students(语义更清晰)
  • 提交逻辑优化:提交时先读取已有数组,追加新数据后再重新存储,避免覆盖
  • 展示逻辑适配:目录页遍历整个学生数组,每个学生单独生成一组展示内容,区分不同学生的信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:31:04