JavaScript 中利用 localStorage 持久化动态表格数据

本教程将详细介绍如何利用 Web Storage API 中的 localStorage,在用户刷新页面后依然保留通过表单提交动态生成的表格行数据。我们将通过创建和管理一个对象数组,并结合 JSON.stringify 和 JSON.parse 方法,实现数据的存储、更新和加载,确保表格内容的持久化显示,从而提升用户体验。

在现代 Web 应用中,用户期望数据能够在页面刷新后依然保留,而不是每次都从头开始。对于动态生成的表格内容,例如通过表单提交添加的行,实现这种数据持久化是提升用户体验的关键。localStorage 提供了一种简单有效的方式来在客户端浏览器中存储键值对数据,并且这些数据在浏览器关闭后依然保留。

1. 数据结构设计与初始化

为了有效地存储表格的每一行数据,我们建议使用一个 JavaScript 对象数组。数组中的每个对象代表表格的一行,并包含该行所需的各项数据(如日期、描述、金额、余额等)。

首先,我们需要在应用程序启动时(例如页面加载完成时)检查 localStorage 中是否已存在我们的数据数组。如果不存在,则初始化一个空数组并将其存储起来。

// 定义 localStorage 中存储数据的键名
const STORAGE_KEY = "transactionData";

/**
 * 获取 localStorage 中的数据数组,如果不存在则初始化为空数组
 * @returns {Array} 存储的数据数组
 */
function getStoredData() {
    const dataString = localStorage.getItem(STORAGE_KEY);
    // 如果 dataString 为 null 或 undefined,则返回空数组
    return dataString ? JSON.parse(dataString) : [];
}

/**
 * 将数据数组存储到 localStorage
 * @param {Array} dataToStore 要存储的数据数组
 */
function saveToLocalStorage(dataToStore) {
    localStorage.setItem(STORAGE_KEY, JSON.stringify(dataToStore));
}

// 页面加载时,确保 localStorage 中有初始数据
document.addEventListener("DOMContentLoaded", () => {
    // 这一步在 getStoredData() 中已经处理了初始化逻辑
    // 但如果想明确地在页面加载时设置一个初始空数组(如果不存在),可以这样做:
    if (!localStorage.getItem(STORAGE_KEY)) {
        saveToLocalStorage([]);
    }
    // 接着,加载并渲染已有的表格数据