localStorage存儲數組或者對象的問題總結


在做  保存選中的復選框記錄(跳轉到下個頁面返回時希望原先選中的東西還在)時, 用到了localStorage存儲數據。

由於復選框的內容有點多,就在localStorage中存入了對象(因為考慮到復選框有可能會多選,長度不一定,沒有用二維數組)。

//首先先聲明了存儲復選框的對象checkarr
var checkarr={};

//將數據存入checkarr中
function storeCheckarr(checkname){
     //每列復選框都是一條數組:checkname:[]
     checkarr[checkname]= [];
    $("input[name='"+checkname+"']:checked").each(function(i){
             checkarr[checkname][i]=$(this).val();
    });
}

//當點擊按鈕的時候存儲數據checkarr到localStorage中
$(".btn-click").click(function(){
    //"xxx"為checkbox中每項的name
    storeCheckarr("xxx");
    storeCheckarr("xxx");
    storeCheckarr("xxx");
    ......
   /*這里是為了防止多次存儲的時候,歷史的數據對新的數據產生影響,所
   以要移除*/
    localStorage.removeItem("checkarr");
   //JSON.stringify(checkarr)是必須要有的,慘痛的經歷告訴我
    localStorage.setItem("checkarr",JSON.stringify(checkarr));

});

讀取數據,並且恢復原先選中的狀態

//storeflag是返回的時候,頁面傳來的標識storeflag=1說明此時是返回
if(storeflag==1){
    /*同理讀取的時候也要轉化,我當時愣是沒寫這個,一直取不出來數據或者取出來的數據很怪異*/
    checkarr=JSON.parse(localStorage.getItem("checkarr"));
    $.each(checkarr["xxx"],function(i,element){
           $("input[name='xxx'][value="+element+"]").attr("checked",true);
            //這兒的內容可以根據自己的需求寫
            ......
    });
}

/*我把這段代碼放在$(document).ready中,就是希望頁面加載的時候,就能顯示出來*/

在別的博客上看到localstorage中只能存儲字符串,所以存儲和取出時要用到JSON.stringify()和JSON.parse();

如果存取的是單個數據,就沒有那么麻煩

var xxx="xxx";
localStorage.setItem("xxx",xxx);

xxx=localStorage.getItem("xxx");

 總結:(來自別的博客:http://blog.csdn.net/liuyan19891230/article/details/52638408)

本地存儲外,除了localStorage,還有sessionStorage. 
(1)localStorage和sessionStorage都是用來存儲客戶端臨時信息的對象。 
(2)localStorage和sessionStorage都只能存儲字符串類型的對象 
(3)localStorage生命周期是永久,除非用戶手動清除localStorage信息,否則這些信息將永遠存在。 
(4)sessionStorage生命周期為當前窗口或標簽頁,一旦窗口或標簽頁被永久關閉了,那么通過sessionStorage中存儲的數據也就被清空了。 
(5)不同瀏覽器無法共享localStorage或sessionStorage中的信息。相同瀏覽器的不同頁面間可以共享相同的localStorage(頁面屬於相同域名和端口),但是不同頁面或標簽頁間無法共享sessionStorage的信息


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM