当前位置: 首页 > news >正文

浏览器本地存储——使用localStorage实现电商系统商品收藏功能实战

本文是对之前的浏览器本地存储:Web Storage详解一文的实战案例,主要使用localStorage实现一个电商系统商品收藏功能的小案例,包含需求分析、实现步骤以及代码实现等等。

本文目录

      • 1.1 需求分析
        • 1.2 实现步骤
        • 1.3 商品收藏功能代码实现

1.1 需求分析

在电商系统中,用户可以收藏商品,收藏的商品信息会被保存到 localStorage 中,并且在页面刷新或重新打开时依然可以查看收藏列表。

1.2 实现步骤
  • 添加收藏功能:当用户点击收藏按钮时,将商品信息(如商品 ID、名称、价格等)存储到 localStorage 中。
  • 显示收藏列表:页面加载时,从 localStorage 中读取收藏的商品信息并显示在页面上。
  • 取消收藏功能:用户可以取消收藏,取消后从 localStorage 中移除对应的商品信息。
1.3 商品收藏功能代码实现
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>商品收藏功能</title>
</head><body><h2>商品列表</h2><ul id="product-list"><li data-id="1" data-name="手机" data-price="2999">手机 - 2999 元 <button class="collect">收藏</button></li><li data-id="2" data-name="电脑" data-price="5999">电脑 - 5999 元 <button class="collect">收藏</button></li></ul><h2>收藏列表</h2><ul id="favorite-list"></ul><script>// 页面加载时显示收藏列表window.onload = function () {showFavoriteList();};// 收藏按钮点击事件const collectButtons = document.querySelectorAll('.collect');collectButtons.forEach(button => {button.addEventListener('click', function () {const product = this.parentNode;const productId = product.dataset.id;const productName = product.dataset.name;const productPrice = product.dataset.price;// 获取已收藏的商品列表let favorites = JSON.parse(localStorage.getItem('favorites')) || [];// 检查商品是否已收藏const isFavorite = favorites.some(item => item.id === productId);if (!isFavorite) {// 添加到收藏列表favorites.push({ id: productId, name: productName, price: productPrice });localStorage.setItem('favorites', JSON.stringify(favorites));showFavoriteList();}});});// 显示收藏列表function showFavoriteList() {const favoriteList = document.getElementById('favorite-list');favoriteList.innerHTML = '';const favorites = JSON.parse(localStorage.getItem('favorites')) || [];favorites.forEach(item => {const li = document.createElement('li');li.textContent = `${item.name} - ${item.price} 元 <button class="uncollect" data-id="${item.id}">取消收藏</button>`;favoriteList.appendChild(li);});// 取消收藏按钮点击事件const uncollectButtons = document.querySelectorAll('.uncollect');uncollectButtons.forEach(button => {button.addEventListener('click', function () {const productId = this.dataset.id;let favorites = JSON.parse(localStorage.getItem('favorites')) || [];favorites = favorites.filter(item => item.id !== productId);localStorage.setItem('favorites', JSON.stringify(favorites));showFavoriteList();});});}</script>
</body></html>



← 上一篇 AngularJS知识快速入门(上)
记得点赞、关注、收藏哦!
下一篇 javascript实现省市区三级联动菜单 →
http://www.dtcms.com/a/277742.html

相关文章:

  • 在网站学装机
  • SCTP协议网络编程
  • 从源码看Nginx:Nginx事件驱动架构深度拆解来了
  • linux上的软挂载操作方法
  • Docker 快速上手
  • 【elementUI踩坑记录】解决 el-table 固定列 el-table__fixed 导致部分滚动条无法拖动的问题
  • 全星质量管理QMS软件系统——汽车零部件制造业数字化转型的质量管理中枢
  • 【设计模式】备忘录模式(标记(Token)模式)
  • 设计模式:软件开发的高效解决方案(单例、工厂、适配器、代理)
  • 从 Intel MacBook 迁移到 ARM MacBook 的完整指南
  • Cursor的使用
  • Pandas 中 stack 和 unstack 方法在数据重塑中的应用
  • 日记-生活随想
  • 信号量机制,互斥的避免自旋锁的实现方法(操作系统)
  • SQL141 试卷完成数同比2020年的增长率及排名变化
  • 《棒球知识科普》体育健将有什么特点·棒球1号位
  • SQL155 大小写混乱时的筛选统计
  • C++进阶-二叉搜索树(二叉排序树)
  • Java机密计算实战:Intel SGX与Spring机密数据保护
  • 在Linux服务器上通过screen挂起程序,以及利用reptyr从终端剥夺程序的控制权转交screen的方法
  • 【Python类管理】装饰器@的实际用法和查询
  • QML 自定义Model基础之QAbstractListModel
  • 流程管理系统中,授权临时节点的技术方案
  • RabbitMQ队列的选择
  • Qt窗口:QToolBar、QStatusBar、QDockWidget、QDialog
  • HTML 段落标签
  • 深度剖析:std::vector 内存机制与 push_back 扩容策略
  • Mysql 笔记
  • 深度学习图像分类数据集—水质量识别分类
  • 单例模式详解:确保一个类只有一个实例