• HTML5 的 localStorage(本地数据库) 的用法


    判断浏览器是否支持localStorage可以使用下面的代码:
    if(window.localStorage){     
    alert("支持localStorage")
    }else{    
    alert("暂不支持localStorage")
     }
     //或者 if(typeof window.localStorage == 'undefined'){     alert("浏览暂不支持localStorage") }
     setItem存储value

    用途:将value存储到key字段
    用法:localStorage.setItem( key, value)
    代码示例:
    localStorage.setItem("id", "2");

    getItem获取value

    用途:获取指定key本地存储的值
    用法:localStorage.getItem(key)
    代码示例:
    var value =localStorage.getItem("id");

    removeItem删除key

    用途:删除指定key本地存储的值
    用法:localStorage.removeItem(key)
    代码示例:
    localStorage.removeItem("id");

    clear清除所有的key/value

    用途:清除所有的key/value
    用法:localStorage.clear()
    代码示例:
    localStorage.clear();

    localStorage提供的key()和length可以方便的实现存储的数据遍历,例如下面的代码:

    var storage = window.localStorage;
     for (var i=0, len = storage.length; i  <  len; i++){    
      var key = storage.key(i);     var value = storage.getItem(key);   
        console.log(key + "=" + value);
         }


    storage事件
    storage还提供了storage事件,当键值改变或者clear的时候,就可以触发storage事件,如下面的代码就添加了一个storage事件改变的监听:
    if(window.addEventListener){     
    window.addEventListener("storage",handle_storage,false);
    }else if(window.attachEvent){
        window.attachEvent("onstorage",handle_storage);
        } function handle_storage(e){     
        if(!e){
        e=window.event;
        }    
       }

    storage事件对象的具体属性如下表:

    Property Type 描述
    key String 指定的键,添加、删除或moddified
    oldValue Any (现在的前一个值覆盖),如果添加了一个新的项目或null
    newValue Any 新值,或null如果一个项目是补充道
    url/uri String 页面称为引发这种变化的方法

    下面是一些使用例子:

      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4     <script src="../Script/jquery-1.9.1.min.js" type="text/javascript"></script>
      5     <title>localStorage</title>
      6     <script type="text/javascript">
      7         var productBrowseTheTraceArray = [];
      8         if (window.localStorage) {
      9             alert("浏览支持localStorage")
     10             try {
     11                 if (typeof localStorage.getItem("productBrowseTheTraceJsonData") != 'undefined') {
     12                     productBrowseTheTraceArray = JSON.parse(localStorage.getItem("productBrowseTheTraceJsonData")) || [];
     13 
     14                     var time = new Date().toLocaleDateString().toString().replace("/", "-").replace("/", "-");  //判断 记录 是否过期
     15                     for (var i = 0;i< productBrowseTheTraceArray.length; i++) {   //循环遍历 去除 过期的数据
     16                         if (daysBetween(time, productBrowseTheTraceArray[i].productAddDateTime) >15) {  //判断 数据的日期是否 大于 15
     17                             productBrowseTheTraceArray.splice(i, 1);  //记录过期  移除
     18                         }
     19                     }
     20                 }
     21                 localStorage.setItem("productBrowseTheTraceJsonData", JSON.stringify(productBrowseTheTraceArray));
     22                 //browseTheTrace = localStorage.getItem("productBrowseTheTraceJsonData") || [];
     23             } catch (e) {
     24                 Window.localStorage.clear(); //删除所有数据 
     25                 localStorage.setItem("productBrowseTheTraceJsonData", JSON.stringify(productBrowseTheTraceArray));
     26                 alert("异常名字:" + e.name);
     27                 alert("异常号:" + e.number);
     28                 alert("异常的描述信息:" + e.description);
     29                 alert("异常的错误信息:" + e.message);
     30             }
     31         } else {
     32             alert("浏览暂不支持localStorage")
     33         }
     34         //或者 if(typeof window.localStorage == 'undefined'){     alert("浏览暂不支持localStorage") }
     35 
     36         $(function () {
     37 
     38 
     39             //setItem存储value
     40             $("#submit").click(function () {
     41                 var obj =
     42                  {
     43                      productId: $("#txtProductId").val(),
     44                      productName: $("#txtProductName").val(),
     45                      productPrice: $("#txtProductPrice").val(),
     46                      productImageUrl: $("#txtProductImageUrl").val(),
     47                      productAddDateTime: new Date().toLocaleDateString().toString().replace("/", "-").replace("/", "-")
     48                  };
     49                  alert(obj);
     50                 for (var i = 0; i < productBrowseTheTraceArray.length; i++) {   //循环遍历 是否 数组里面已经存在 该数据
     51                     if (productBrowseTheTraceArray[i].productId == obj.productId) {
     52                         productBrowseTheTraceArray.splice(i, 1);  //记录过期  移除
     53                         break;
     54                     }
     55                 }
     56                 productBrowseTheTraceArray.push(obj);
     57                 var jsonData = JSON.stringify(productBrowseTheTraceArray);
     58                 alert(jsonData);
     59 
     60                 localStorage.setItem("productBrowseTheTraceJsonData", jsonData);
     61 
     62             });
     63 
     64             $("#getData").click(function () {
     65                 productBrowseTheTraceArray = JSON.parse(localStorage.getItem("productBrowseTheTraceJsonData")) || [];
     66                 alert(productBrowseTheTraceArray);
     67                 var html = [];
     68                 for (var i = 0; i < productBrowseTheTraceArray.length; i++) {
     69                     html[i] = "<p>产品ID:" + productBrowseTheTraceArray[i].productId + "</p><br/><p>产品名称:" + productBrowseTheTraceArray[i].productName + "</p><br/><p>产品价格:" + productBrowseTheTraceArray[i].productPrice + "</p><br/><p>产品图片URL:" + productBrowseTheTraceArray[i].productImageUrl + "</p>";
     70                 }
     71                 $("#data").html(html.join(""));
     72                 alert(html);
     73             });
     74 
     75         });
     76 
     77 
     78 
     79         //+---------------------------------------------------  
     80         //| 求两个时间的天数差 日期格式为 YYYY-MM-dd   
     81         //+---------------------------------------------------  
     82         function daysBetween(DateOne, DateTwo) {
     83             var OneMonth = DateOne.substring(5, DateOne.lastIndexOf('-'));
     84             var OneDay = DateOne.substring(DateOne.length, DateOne.lastIndexOf('-') + 1);
     85             var OneYear = DateOne.substring(0, DateOne.indexOf('-'));
     86 
     87             var TwoMonth = DateTwo.substring(5, DateTwo.lastIndexOf('-'));
     88             var TwoDay = DateTwo.substring(DateTwo.length, DateTwo.lastIndexOf('-') + 1);
     89             var TwoYear = DateTwo.substring(0, DateTwo.indexOf('-'));
     90 
     91             var cha = ((Date.parse(OneMonth + '/' + OneDay + '/' + OneYear) - Date.parse(TwoMonth + '/' + TwoDay + '/' + TwoYear)) / 86400000);
     92             return Math.abs(cha);
     93         }  
     94     </script>
     95 </head>
     96 <body>
     97     Key:<input type="text" id="txtKey" /><br />
     98     产品Id:<input type="text" id="txtProductId" /><br />
     99     产品名称:<input type="text" id="txtProductName" /><br />
    100     产品价格:<input type="text" id="txtProductPrice" /><br />
    101     产品图片:<input type="text" id="txtProductImageUrl" /><br />
    102     <input type="button" id="submit" value="添加" />
    103     <input type="button" id="getData" value="获取localStorage的值" />
    104     <br />
    105     <div id="data">
    106     </div>
    107 </body>
    108 </html>
    View Code
  • 相关阅读:
    拖动内容,滚动条滚动,横向
    前端面试题及答案整理(一)
    微软拼音转换工具类ChnCharInfo.dll
    table表格,让thead固定,tbody有滚动条,关键是都对齐的纯css写法。
    [C#]_[使用微软OpenXmlSDK (OpenXmlReader)读取xlsx表格] 读取大数据量100万条数据Excel文件解决方案
    asp.net mvc Post上传文件大小限制
    .net OADate 转javascript的Datetime js 5位 日期 转换
    在.NET开发中的单元测试工具之(1)——NUnit
    在.NET开发中的单元测试工具之(2)——xUnit.Net
    Git 头像修改 原
  • 原文地址:https://www.cnblogs.com/linJie1930906722/p/5327054.html
Copyright © 2020-2023  润新知