localStorage本地存储数组、读取、修改、删除

应用场景:用于记录扫码枪获取的编码数据,并存储在本地、计数。可修改,可导出excel。

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>Scanning</title>
  6 <style>
  7 input{width:600px;height:38px;line-height: 38px;font-size: 32px;border:1px solid #ccc;outline: none;}
  8 table{font-size: 14px;margin:20px 0;}
  9 table,table tr,table tr td{border-collapse: collapse;border-spacing: 0;border:1px solid #ccc;}
 10 td{padding:5px;}
 11 .operation{ text-align: center;}
 12 .operation button{ margin: 0 5px;}
 13 #export{ width: 604px; display: block; line-height: 30px; margin-bottom: 30px;}
 14 </style>
 15 </head>
 16 <body>
 17
 18 <input type="textbox" id="coding" maxlength="24" />
 19 <table id="table-main">
 20     <tr id="num-data">
 21         <td width="220">编号</td>
 22         <td width="100">尺码</td>
 23         <td width="100">数量</td>
 24         <td width="139">操作</td>
 25     </tr>
 26 </table>
 27 <button id="export">导出数据</button>
 28 <button id="clear">清除</button>
 29 <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
 30 <script>
 31
 32 document.onkeydown=function(event){
 33     var e = event || window.event || arguments.callee.caller.arguments[0];
 34     if(e && e.keyCode==13){
 35         var _code=$("#coding").val();
 36         if(_code){
 37             var _size=_code.substr(-3);
 38             var _index=$.inArray(_code,local.code);
 39             if(_index==‘-1‘){
 40                 var _num=1;
 41                 local.data(_code,_num);
 42                 local.addtd(_code,_size,_num);
 43             }else{
 44                 var _num=Number(local.num[_index])+1;
 45                 local.data(_index,_num,‘modify‘);
 46                 $(‘.code‘).each(function(){
 47                     if($(this).text()==_code){
 48                         $(this).siblings(‘.num‘).text(_num);
 49                         return;
 50                     }
 51                 });
 52             }
 53         }else{
 54             alert(‘编码错误!‘);
 55         }
 56         $(‘#coding‘).val(‘‘).focus();
 57     }else{
 58         $(‘#coding‘).focus();
 59     }
 60 };
 61
 62 var local={
 63     //存储的数组
 64     code:[],
 65     num:[],
 66     //存储方法
 67     data:function(code,num,modify){
 68         if(localStorage.code&&localStorage.num){
 69             local.code=local.read(‘code‘);
 70             local.num=local.read(‘num‘);
 71         }
 72         if(modify==‘modify‘){
 73             local.num[code]=num;
 74             localStorage.num=local.num;
 75         }else{
 76             local.code.push(code);
 77             local.num.push(num);
 78             localStorage.code=local.code;
 79             localStorage.num=local.num;
 80         }
 81     },
 82     //读取数组方法
 83     read:function(type){
 84         if(localStorage.code&&localStorage.num){
 85             if(type==‘code‘){
 86                 var str=localStorage.code;
 87                 return str.split(",");
 88             }else{
 89                 var str=localStorage.num;
 90                 return str.split(",");
 91             }
 92         }else{
 93             return false;
 94         }
 95     },
 96     //清除方法
 97     remove:function(){
 98         localStorage.clear();
 99         local.code=[];
100         local.num=[];
101         history.go(0);
102     },
103     //添加数据元素
104     addtd:function(code,size,num){
105         $(‘#num-data‘).after(
106             "<tr>"+
107                 "<td class=‘code‘>"+code+"</td>"+
108                 "<td class=‘size‘>"+size+"</td>"+
109                 "<td class=‘num‘>"+num+"</td>"+
110                 "<td class=‘operation‘><button class=‘mod‘>修改</button><button class=‘del‘>删除</button></td>"+
111             "</tr>"
112         );
113     },
114     //初始化
115     innt:function(){
116         $("#coding").focus();
117         var code=local.read(‘code‘);
118         var num=local.read(‘num‘);
119         if(code){
120             local.code=local.read(‘code‘);
121             local.num=local.read(‘num‘);
122             for(var i=0;i<code.length;i++){
123                 var size=code[i].substr(-3);
124                 local.addtd(code[i],size,num[i]);
125             }
126         }
127     }
128 };
129
130 var exp={
131     idTmr:null,
132     getExplorer:function(){
133         var explorer = window.navigator.userAgent ;
134         if (explorer.indexOf("MSIE") >= 0) {
135             return ‘ie‘;
136         }
137         else if (explorer.indexOf("Firefox") >= 0) {
138             return ‘Firefox‘;
139         }
140         else if(explorer.indexOf("Chrome") >= 0){
141             return ‘Chrome‘;
142         }
143         else if(explorer.indexOf("Opera") >= 0){
144             return ‘Opera‘;
145         }
146         else if(explorer.indexOf("Safari") >= 0){
147             return ‘Safari‘;
148         }
149     },
150     method:function(tableid){
151         if(exp.getExplorer()==‘ie‘){
152             var curTbl = document.getElementById(tableid);
153             var oXL = new ActiveXObject("Excel.Application");
154             var oWB = oXL.Workbooks.Add();
155             var xlsheet = oWB.Worksheets(1);
156             var sel = document.body.createTextRange();
157             sel.moveToElementText(curTbl);
158             sel.select();
159             sel.execCommand("Copy");
160             xlsheet.Paste();
161             oXL.Visible = true;
162             try{
163                 var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls");
164             }catch(e){
165                 print("Nested catch caught " + e);
166             }finally{
167                 oWB.SaveAs(fname);
168                 oWB.Close(savechanges = false);
169                 oXL.Quit();
170                 oXL = null;
171                 exp.idTmr = window.setInterval("exp.Cleanup();", 1);
172             }
173         }else{
174             exp.tableToExcel(tableid)
175         }
176     },
177     Cleanup:function(){
178         window.clearInterval(exp.idTmr);
179         CollectGarbage();
180     },
181     tableToExcel:(function(){
182         var uri = ‘data:application/vnd.ms-excel;base64,‘,
183                 template = ‘<html><head><meta charset="UTF-8"></head><body><table>{table}</table></body></html>‘,
184                 base64 = function(s){ return window.btoa(unescape(encodeURIComponent(s))) },
185                 format = function(s, c){
186                     return s.replace(/{(\w+)}/g,
187                             function(m, p) { return c[p]; }) }
188         return function(table, name) {
189             if(!table.nodeType) table = document.getElementById(table)
190             var ctx = {worksheet: name || ‘Worksheet‘, table: table.innerHTML}
191             window.location.href = uri + base64(format(template, ctx))
192         }
193     })()
194 }
195
196 //初始化
197 local.innt();
198
199 //导出excel
200 $(‘#export‘).click(function(){
201     exp.method(‘table-main‘);
202 });
203
204 //删除/修改
205 $(document).on(‘click‘,‘.operation button‘,function(){
206     var pet=$(this).parents(‘tr‘);
207     var code=pet.find(‘.code‘).text();
208     var index=$.inArray(code,local.code);
209     if($(this).hasClass(‘del‘)){
210         if(confirm("确定要删除这条数据?")){
211             local.code.splice(index,1);
212             local.num.splice(index,1);
213             pet.remove();
214             localStorage.code=local.code;
215             localStorage.num=local.num;
216         }
217     }else{
218         var pro=prompt(‘修改数量‘,local.num[index]);
219         local.num[index]=pro;
220         localStorage.num=local.num;
221         pet.find(‘.num‘).text(pro);
222     }
223 });
224
225 //清除,测试用,可去掉
226 $(‘#clear‘).click(function(){
227     local.remove();
228 });
229 </script>
230 </body>
231 </html>
时间: 2024-11-07 11:44:44

localStorage本地存储数组、读取、修改、删除的相关文章

HTML5 LocalStorage 本地存储(转)

原文:http://www.cnblogs.com/xiaowei0705/archive/2011/04/19/2021372.html HTML5 LocalStorage 本地存储 说到本地存储,这玩意真是历尽千辛万苦才走到HTML5这一步,之前的历史大概如下图所示: 最早的Cookies自然是大家都知道,问题主要就是太小,大概也就4KB的样子,而且IE6只支持每个域名20个cookies,太少了.优势就是大家都支持,而且支持得还蛮好.很早以前那些禁用cookies的用户也都慢慢的不存在了

HTML5 localStorage本地存储

介绍 localStorage(本地存储)的使用方式.包括对存储对象的添加.修改.删除.事件触发等操作. 目录 1. 介绍 1.1 说明 1.2 特点 1.3 浏览器最小版本支持 1.4 适合场景 2. 成员 2.1 属性 2.2 方法 2.3 事件 3. 示例 3.1 存储数据 3.2 读取数据 3.3 存储Json对象 1. 介绍 1.1 说明 localStorage 即本地存储,可用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去除. 在JavaScript语言中可通过 wi

(转载)HTML5 LocalStorage 本地存储

原文地址:http://www.cnblogs.com/xiaowei0705/archive/2011/04/19/2021372.html HTML5 LocalStorage 本地存储 说到本地存储,这玩意真是历尽千辛万苦才走到HTML5这一步,之前的历史大概如下图所示: 最早的Cookies自然是大家都知道,问题主要就是太小,大概也就4KB的样子,而且IE6只支持每个域名20个cookies,太少了.优势就是大家都支持,而且支持得还蛮好.很早以前那些禁用cookies的用户也都慢慢的不存

HTML5 localStorage本地存储实际应用举例

HTML5 localStorage本地存储实际应用举例 by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1952 一.引言 HTML5虽未来到其鼎盛时期,但这并不妨碍我们在实际项目中渐进使用HTML5的一些特性.就我所做的项目而言,应用的HTML5相关特性有:data-自定义属性.placeholder.以及email类型input文本框.上周新上线的会员中心,自己又

localStorage本地存储的简单使用

我们在做页面时会用到本地存储的时候,今天说说localStorage本地存储. 1.localStorage.name="老王";      //第一种设置存储本地数据的方法localStorage 2.localStorage.setItem("color","red");   //第二种设置存储本地数据的方法 3.localStorage.removeItem("name"); //删除本地存储数据 4.localStor

LocalStorage本地存储

LocalStorage,即"Web存储",某些浏览器供应商也叫"本地存储"."DOM存储",原本作为HTML5标准的一部分,后来因为某些原因被抽离出来作为单独的WEB应用标准.localStorage提供了一种方式,让Web页面在客户端浏览器中以键值对的形式存储本地字符串数据,无论是用户是离开该站点,刷新,关闭浏览器还是其他操作,存储的数据依然存在. 一.localStorage与cookie localStorage与cookie一样,都是在

Localstorage本地存储兼容函数

前言HTML5提供了本地存储的API:localstorage对象和sessionStorage对象,实现将数据存储到用户的电脑上.Web存储易于使用.支持大容量(但非无限量)数据同时存储,同时兼容当前所有主流浏览器,但不兼容早期浏览器.存储APIlocalStorage和sessionStorage通常被当做普通的JavaScript对象使用:通过设置属性来存储字符串值,查询该属性来读取该值.除此之外,这两个对象还提供了更加正式的API.调用setItem()方法,将对应的名字和值传递出去,可

HTML5 LocalStorage 本地存储

LocalStorage 本地存储方法如下: setItem : function(key, value)getItem : function(key)removeItem : function(key)clear : function()length : intkey : function(i)isVirtualObject : true 本地存储K的值时 localStorage.setItem('k','a'); 存储在本地,可以直接调用JSON.stringify()将其转为字符串 fu

LocalStorage 本地存储

首先自然是检测浏览器是否支持本地存储.在HTML5中,本地存储是一个window的属性,包括localStorage和sessionStorage,从名字应该可以很清楚的辨认二者的区别,前者是一直存在本地的,后者只是伴随着session,窗口一旦关闭就没了.二者用法完全相同,这里以localStorage为例. if(window.localStorage){ alert('This browser supports localStorage');}else{ alert('This brows