如何在页面刷新后持久化保存动态添加的列表项

梦强同学_3080

梦强同学_3080

2026-10-23

984人浏览

原创

如何在页面刷新后持久化保存动态添加的列表项

本文介绍使用浏览器本地存储(localstorage)实现动态增删列表项并持久化保存,确保页面重载后数据不丢失,无需服务端参与,适合轻量级管理需求。

本文介绍使用浏览器本地存储(localstorage)实现动态增删列表项并持久化保存,确保页面重载后数据不丢失,无需服务端参与,适合轻量级管理需求。

要实现在网页中动态添加汽车描述、图片和价格,并在页面刷新后仍保留所有条目,最简洁、可靠且无需后端支持的方案是利用 localStorage。它允许前端 JavaScript 在用户浏览器中长期保存结构化数据,完美匹配您“添加/删除 + 刷新留存”的核心需求。

✅ 推荐实现方案:基于 localStorage 的全前端管理

我们对原始代码进行重构升级,支持:

  • 添加含 描述、图片 URL、价格 的完整商品项;
  • 每项右侧带「删除」按钮;
  • 所有操作实时同步至 localStorage;
  • 页面加载时自动恢复历史数据;
  • 无刷新交互,体验流畅专业。

以下是完整的 test.js 实现:

// 从 localStorage 加载已有数据,若无则初始化空数组
function loadItems() {
  const saved = localStorage.getItem('carItems');
  return saved ? JSON.parse(saved) : [];
}

// 保存当前数据到 localStorage
function saveItems(items) {
  localStorage.setItem('carItems', JSON.stringify(items));
}

// 渲染列表(清空后重新生成 DOM)
function renderList(items) {
  const listEl = document.getElementById('items');
  listEl.innerHTML = ''; // 清空现有内容

  items.forEach((item, index) => {
    const li = document.createElement('li');
    li.innerHTML = `
      <div class="item-content">
        <strong>${item.description || 'N/A'}</strong><br>
        ${item.image ? `<img src="%24%7Bitem.image%7D" alt="Car"    style="max-width:90%" style="vertical-align:middle; margin-right:8px;">` : ''}
        <span>¥${item.price || '0.00'}</span>
      </div>
      <span class="delete-btn" data-index="${index}">Delete</span>
    `;
    listEl.appendChild(li);
  });

  // 绑定新生成的删除按钮事件(委托更优,但此处简单绑定)
  document.querySelectorAll('.delete-btn').forEach(btn => {
    btn.addEventListener('click', function() {
      const idx = parseInt(this.getAttribute('data-index'));
      const items = loadItems();
      items.splice(idx, 1);
      saveItems(items);
      renderList(items); // 重绘
    });
  });
}

// 初始化:加载并渲染
document.addEventListener('DOMContentLoaded', () => {
  const items = loadItems();
  renderList(items);

  // 添加按钮逻辑
  const addButton = document.getElementById('add-item');
  addButton.addEventListener('click', () => {
    const desc = prompt('请输入汽车描述:');
    if (!desc) return;

    const image = prompt('请输入图片 URL(可选,直接回车跳过)') || '';
    const priceInput = prompt('请输入价格(如:299999.99)') || '0';
    const price = isNaN(parseFloat(priceInput)) ? 0 : parseFloat(priceInput).toFixed(2);

    const newItem = { description: desc.trim(), image, price };
    const items = loadItems();
    items.push(newItem);
    saveItems(items);
    renderList(items);
  });
});

同时建议补充简易 CSS 增强可读性(添加至 test.css):

ul {
  padding: 0;
}
li {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background-color: #f9f9f9;
  margin: 6px 0;
  padding: 10px 12px;
  border-radius: 4px;
  box-shadow: 0 1px 2px rgba(0,0,0,0.05);
}
.item-content {
  flex: 1;
  font-size: 0.95em;
  line-height: 1.4;
}
.delete-btn {
  margin-left: 12px;
  background-color: #e74c3c;
  color: white;
  padding: 4px 10px;
  border-radius: 3px;
  cursor: pointer;
  font-size: 0.85em;
  user-select: none;
}
.delete-btn:hover {
  background-color: #c0392b;
}
img {
  max-height: 40px;
  border-radius: 2px;
}

⚠️ 注意事项与最佳实践

  • 安全性提示:localStorage 数据可被用户直接查看/修改,切勿存放敏感信息(如密码、令牌)。本例仅存展示型数据,符合安全边界。
  • 跨设备不同步:localStorage 作用域为单浏览器+单域名,不跨设备或浏览器同步;如需多端一致,请升级为后端 API + 数据库方案。
  • 容量限制:通常约 5–10MB,远超本例需求(每条商品约几百字节),无需担心溢出。
  • 兼容性:现代浏览器(Chrome/Firefox/Safari/Edge)均原生支持,IE10+ 可用。
  • 扩展建议:未来如需排序、搜索、导出 Excel 或图片上传,可在当前架构上平滑叠加功能。

通过以上实现,您的朋友即可在浏览器中完成完整的汽车信息增删管理,所有数据随页面刷新自动恢复——零服务端依赖、零部署成本、开箱即用。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2023.08.07

2155

5

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.23

3342

1

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

2023.10.13

1116

3

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

2025.09.10

3839

7

cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

2023.06.30

12039

10

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.23

1166

5

阻止所有cookie什么意思
阻止所有cookie什么意思

阻止所有cookie意味着在浏览器中禁止接受和存储网站发送的cookie。阻止所有cookie可能会影响许多网站的使用体验,因为许多网站使用cookie来提供个性化服务、存储用户信息或跟踪用户行为。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

824

5

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

2025.08.19

1906

14

session失效的原因
session失效的原因

session失效的原因有会话超时、会话数量限制、会话完整性检查、服务器重启、浏览器或设备问题等等。详细介绍:1、会话超时:服务器为Session设置了一个默认的超时时间,当用户在一段时间内没有与服务器交互时,Session将自动失效;2、会话数量限制:服务器为每个用户的Session数量设置了一个限制,当用户创建的Session数量超过这个限制时,最新的会覆盖最早的等等。

2023.10.17

580

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.9万人学习