0

0

使用 JavaScript LocalStorage 实现计算器历史记录功能

碧海醫心

碧海醫心

发布时间:2025-07-13 17:26:14

|

870人浏览过

|

来源于php中文网

原创

使用 javascript localstorage 实现计算器历史记录功能

本文将介绍如何使用 JavaScript 的 LocalStorage 实现一个简单的计算器历史记录功能。通过将用户输入的数字存储在 LocalStorage 中,并使用数组的 unshift 和 pop 方法,我们可以轻松地维护一个固定长度的历史记录,并在每次计算后更新它。

利用 LocalStorage 存储计算器历史

在开发计算器应用时,记录用户的计算历史是一个常见的需求。JavaScript 的 localStorage 提供了一种在浏览器端存储数据的简单方式,可以用来实现这个功能。

基本思路

  1. 初始化: 页面加载时,从 localStorage 中读取历史记录,如果不存在则创建一个空数组。
  2. 存储新数字: 当用户输入新的数字时,将其添加到历史记录数组的开头。
  3. 维护长度: 为了保持历史记录的长度固定,当数组长度超过限制时,移除数组末尾的元素。
  4. 更新 LocalStorage: 将更新后的历史记录数组存回 localStorage。

代码实现

以下是一个示例代码,展示了如何实现这个功能:

window.addEventListener("DOMContentLoaded", () => {
  // 从 localStorage 加载历史记录,如果不存在则创建一个空数组
  const arr = JSON.parse(localStorage.getItem("arr") || '[]');

  // 保存数字的函数
  const saveNumber = num => {
    arr.unshift(num); // 将数字添加到数组开头
    if (arr.length === 6) arr.pop(); // 如果数组长度超过 6,移除末尾的元素
    localStorage.setItem("arr", JSON.stringify(arr)); // 将更新后的数组存回 localStorage
  };

  // 事件委托,监听计算器按钮点击事件
  document.getElementById("calculator").addEventListener("click", (e) => {
    const tgt = e.target.closest("button.num"); // 找到被点击的按钮
    if (!tgt) return; // 如果点击的不是数字按钮,则返回
    saveNumber(+tgt.textContent); // 将按钮上的数字保存到历史记录
  });
});

代码解释:

简单库存管理系统
简单库存管理系统

本系统是一个基于工厂模式的三层架构项目,基于VS2005 开发,结构简洁,配合动软Codematic代码生成器,可以使开发效率事半功倍,倍感轻松。本系统主要功能 1,物品类别管理 实现了物品类别的添加、修改、删除功能,方便库存物品分类管理。 2,物品管理 实现物品添加、修改,管理员可实时对物品做出库、入库记录,也可查看详细历史出入库记录。 3,商家管理 实现商家添加、修改、删除功能,方便公司和客户

下载

立即学习Java免费学习笔记(深入)”;

  • window.addEventListener("DOMContentLoaded", ...):确保在页面加载完成后执行代码。
  • JSON.parse(localStorage.getItem("arr") || '[]'):从 localStorage 中读取键为 "arr" 的数据,如果不存在,则使用空数组 [] 作为默认值。JSON.parse 用于将 JSON 字符串转换为 JavaScript 对象。
  • arr.unshift(num):将新的数字 num 添加到数组 arr 的开头。
  • arr.length === 6:检查数组长度是否达到最大值(这里是 6)。
  • arr.pop():如果数组长度超过最大值,则移除数组末尾的元素。
  • localStorage.setItem("arr", JSON.stringify(arr)):将更新后的数组 arr 转换为 JSON 字符串,并存储到 localStorage 中。JSON.stringify 用于将 JavaScript 对象转换为 JSON 字符串。
  • document.getElementById("calculator").addEventListener("click", ...):为 ID 为 "calculator" 的元素(这里是计算器容器)添加点击事件监听器。
  • e.target.closest("button.num"):查找最近的具有 "num" 类的按钮元素,即被点击的数字按钮。
  • +tgt.textContent:将按钮上的文本内容转换为数字。

HTML 代码示例:

注意事项

  • 数据类型: localStorage 只能存储字符串类型的数据。因此,需要使用 JSON.stringify 将 JavaScript 对象转换为字符串,并使用 JSON.parse 将字符串转换回 JavaScript 对象。
  • 存储限制: localStorage 的存储容量有限,通常为 5MB 左右。如果需要存储大量数据,建议使用其他存储方案,例如 IndexedDB。
  • 安全性: 存储在 localStorage 中的数据可以被同一域名下的任何页面访问。因此,不建议存储敏感信息,例如密码。
  • 浏览器兼容性: localStorage 在所有主流浏览器中都得到支持。

总结

通过使用 JavaScript 的 localStorage 和数组操作,我们可以轻松地实现一个计算器历史记录功能。这种方法简单易用,适用于存储少量数据。在实际应用中,需要注意数据类型转换、存储限制和安全性问题。 通过上述方法,可以轻松地为你的计算器添加一个实用的历史记录功能。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

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

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

418

2023.08.07

json是什么
json是什么

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

535

2023.08.23

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

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

311

2023.10.13

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

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

77

2025.09.10

数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

309

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

222

2025.10.31

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

298

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.09.04

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

158

2026.01.28

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
如何进行WebSocket调试
如何进行WebSocket调试

共1课时 | 0.1万人学习

TypeScript全面解读课程
TypeScript全面解读课程

共26课时 | 5.1万人学习

前端工程化(ES6模块化和webpack打包)
前端工程化(ES6模块化和webpack打包)

共24课时 | 5.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号