网上单独讲解localStorage的内容很多,但是成套运作的比较少,本篇文章作为学习记录也给与我同样非专业出身的自学者们一条快速通道。

文章将分为以下几个部分:

  1. 逻辑结构
  2. 基础讲解
  3. 创建一个完整的操作链

逻辑结构

由图可见,非常的朴实无华呢()

用户访问 → JS/JQ判断是否存在localStorage数据

→ 存在 →读取 → 数据序列还原 → 应用到当前页面

→ 不存在 →结束

编辑内容 → JS/JQ 识别主动/被动储存操作

→ 获取存储目标对象 → 数据序列化处理 → 存储localStorage数据

实例文件下载可以去github :https://github.com/kumame/Tools/tree/main/fsnm
我之前写的 论坛风格小说编辑器 ,主要运行代码都在app.js里面,写的还挺规整的可读性应该没问题。

基础知识

localStorage的本地数据储存基于相同域名,也就是说不管你有多少单独页面,只要域名是同一个那么所有数据都会储存在这个名下,因此多数据页面时需要注意存储的命名规范。

实际上语言上我更推荐JQ,主要是简洁明了减少了很多操作。当然,不论是JS还是JQ在执行逻辑上是一样的。

localStorage储存的时候需要两个数据: 键(key) 和 值(value),简单理解就是标题和内容。在读取时根据 键(key) 获得对应的 值(value) 返回给页面。

因此是否存在对应数据依靠的是查找 键(key) ,数据量较少的情况下实际上使用if(localStorage.key)就可以快速判断了,较多的时候可以使用localStorage.hasOwnProperty(‘key’)进行数组筛选,后者会返回布尔值也就是true/false。

在使用localStorage数据时,值(value)会作为字符串直接使用,因此如果你是多数据数组的话使用的时候得进行一次拆分操作。

用JQ来示范给input填充单一保存信息:$("#id").val(localStorage.key);

创建存储数据也非常的简单,localStorage.key=目标数据,这里的localStorage.key就和var赋值是一样的。

清除localStorage数据有两个方式:

  • 清除域名下的所有数据localStorage.clear()
  • 清除指定 键(key)的数据localStorage.removeItem("key")

创建一个完整的操作链

1、确定你需要储存的有些哪些数据,并进行ID规范命名以便之后获取。

2、设置触发储存function函数:

函数中获取你需要的所有数据并设置key名储存;

数量较少的情况可以分别储存单独的key;

数据量较多的时候可以创建一个数组 new Array() 将所有数据对应数组序号。

若获取的数据中有多选(checkbox)的情况,可以使用.each(function())直接输出数组。或者先使用for获取循环,判定.checked状态的数据输出,并在输出结果的时候加上分割符号,再使用. replace()替换掉多余的分隔符号避免空数据。该部分储存的数据最好为获取对象的ID方便之后恢复时候定位。

3、设置自动保存function函数,触发的是2储存函数;

4、如果有键盘快捷键储存的需求,触发的也是2储存函数;

5、鉴于操作反馈,可以添加一个不影响连续操作的保存提示;

6、设置套用数据function函数:

单一数据可以直接套用,多数据作为数组储存的情况下先还原数组 var list = localStorage.key.split(","),按照储存时候的序列顺序对应套用即可。

数组连环套的情况下可以直接用for循环拆解并输出。

7、设置读取数据的function函数:

可以使用html标签 οnlοad=“读取函数()”,也可以使用别的加载方法,哪个方便用哪个便可。

读取数据可以设置为:主动 - 打开页面即刻获取并填充;手动 – 获取后出现提示操作让使用者选择是否填充。

8、依需求设置是否允许使用者主动清理缓存。

代码意思意思一下的演示:

//读取数据
function load(){if(localStorage.key) $("#ID").css("display","block");//激活隐藏的手动触发提示if(localStorage.key) $("#ID") $("#ID").val(window.localStorage.ke);//识别后自动填充
}//使用数据 – 基于手动操作或是处理量较多的数据
$("#insert").click(function(){重组数据后并应用的一些里操作
});//清理数据
$("# clear").click(function(){window.localStorage.removeItem("key"); //针对单一数据清理localStorage.clear(); //清理所有,同站点多页面数据时慎用
});//储存数据
JQ("#save").click(function(){获取并处理需要储存的数据Var detail = ‘’;//赋值主要用于数组,单一可以直接执行下面的 = 获取命令;localStorage.key = detail;
$("#tip").text('数据缓存于 '+new Date().toLocaleTimeString('en-US',{hour12:false}));//保存后于特定区域提示
});//自动保存
var autosave = window.setInterval(function(){$('#save').click()},60000 );
这里的数字为毫秒计算,因此是60秒。//键盘监听 Ctrl+S
function keyDown(e){currKey = e.keyCode||e.which||e.charCode;if(currKey == 83 && (e.ctrlKey||e.metaKey)){$('#save').click();return false;}
}
document.onkeydown = keyDown;

jq 如何获取和当然元素相同类名的标签_JS/JQ基于localStorage的本地数据储存指南...相关推荐

  1. jq 如何获取和当然元素相同类名的标签_jquery获取兄弟元素-jquery获取下一个兄弟元素-jquery获取最后一个兄弟元素...

    jquery怎幺获取当前元素的兄弟元素 可以使用 siblings() jquery既然有next方法取得下一个元素,那幺有previous方法吗 $("#id").prev(); ...

  2. jq 如何获取和当然元素相同类名的标签_JQuery获取元素类名

    一般而言,JQuery可以利用attr来获取元素的属性值, 1.$("元素").attr("属性");                //获取指定属性的值 2. ...

  3. jquery选择器 之 获取父级元素、同级元素、子元素

    一.获取父级元素 1. parent([expr]): 获取指定元素的所有父级元素 <divid="par_div"><aid="href_fir&qu ...

  4. js,jq设置获取属性,样式

    js设置获取属性:设置属性-element.setAttribute("属性名称","属性值"):获取属性-element.getAttribute(" ...

  5. ***jquery选择器 之 获取父级元素、同级元素、子元素

    一.获取父级元素 1. parent([expr]): 获取指定元素的所有父级元素 <div id="par_div"><a id="href_fir& ...

  6. mybatis 取查询值_Mybatis --- 映射文件、参数处理、参数值的获取、select元素

    这样就可以在insert函数中获取新添加的用户的 id主键,否则获取不到 select * from student where id = #{id} insert into student(name ...

  7. angularjs获取上一个元素的id_DOM(1)-DOM概念和获取元素

    1. 概念 JavaScript共有三部分组成:ECMAScript.DOM.BOM,其中DOM和BOM成为Web API,可以被包括ECMAScript在内的Web编程语言使用,现在就来开始学习DO ...

  8. 微信小程序动态获取和设置元素宽高

    需求 由于设计界面时常常会用到vh和rpx来设置元素的宽高,但是由于每个手机屏幕的高都不确定,而有时候在设计界面时想把内容刚好适应屏幕大小. 解决方法 设置要动态修改宽高的元素. <view c ...

  9. 如何在JavaScript中为元素添加类名?

    Adding class names using JavaScript can be often used to give certain functionalities to your web ap ...

  10. 前端 -> js原生选择器,jQuery选择器 基本选择器(ID选择器,元素选择器,类名选择器,复合选择器,通配符选择器)

    文章目录 jQuery基本选择器 js选择器(原生选择器) jQuery基本选择器 1. ID选择器ID选择器#id就是利用DOM元素的id属性值来筛选匹配的元素,并以iQuery包装集的形式返回给对 ...

最新文章

  1. jQuery EasyUI 表单插件 - Datebox 日期框
  2. nagios配置监控的一些思路和工作流程
  3. Animator窗口视图Project视图PlayerIdleAnimation和PlayerWalkingAnimation
  4. 调用ajax_[WEB篇]-AJAX-02-AJAX应用案例
  5. ajax跨域为什么会失败,ajax跨域请求失败是怎么回事?
  6. Web前端程序员该如何准备面试?这些面试知识应该掌握
  7. C++_类和对象_对象特性_This指针的用途_用来解决名称冲突_*this实现链式编程---C++语言工作笔记049
  8. 杭电 2176 取(m堆)石子游戏(博弈)
  9. 安卓java编译器_最方便的安卓手机端Java编译程序(支持中文字符串)
  10. select2 多选框
  11. 安捷伦仪器仪表 - 程控总结
  12. matlab 梯度下降 求偏导,通过计算图求梯度下降中各偏导的推导
  13. python中的sys模块安装_Python sys模块参考手册
  14. FreeRTOS 事件标志组
  15. java.lang.IllegalArgumentException 异常报错完美解决
  16. Linux配置SVN 服务端
  17. openssl给内网IP生成ca证书(ssl证书)
  18. python 函数式编程及递归
  19. Oracle中的emp、dept、bonus及salgrade表的新建及MySQL中的三种注释形式
  20. ArcGIS学习教程免费版在线观看

热门文章

  1. 什么?你的私钥泄漏了?
  2. 国内车载信息安全产业联盟成立
  3. 0708 - 今天休息,顺便废了个点子
  4. 2017年最值得关注的5大产品设计趋势
  5. 15条经典实用的网站优化技巧
  6. 关于Decorator模式
  7. c盘local文件太大_win7 c盘清理的方法教程
  8. 启动vue项目的时候报错提示To install it, you can run: npm install --save core-js/modules/es.regexp.dot
  9. 持久化策略RDB和AOF的简单理解
  10. mybatis中的动态Sql略解,基础理解,为什么要使用动态sql,动态sql相比于传统sql的区别;仅作笔记,如有错误请及时指出