簡體   English   中英

sessionStorage中的增量鍵

[英]increment key in sessionStorage

所以我在這里有這段代碼

var i = 0;
function contactUs(event){
    event.preventDefault();
    var lettre = new message();
    sessionStorage.setItem("lettreNo" + i++, JSON.stringify(lettre));
    $("form")[0].reset();
}

但是我知道這是錯誤的,因為密鑰不會增加,它將覆蓋該內容,如果我轉到另一個頁面並由於我的所有頁面都使用了此腳本而返回,我該如何解決呢?

只需將一個數組存儲在一個存儲屬性中:

const letters = JSON.parse(sessionStorage.getItem("letters")) || [];
letters.push(letter /*?*/);
sessionStorage.setItem("letters", JSON.stringify(letters));

或者,如果您真的想要這個復雜的關鍵事物,那么創建一個助手是有意義的:

function sessionArray(name) {
   let length = +sessionStorage.getItem(name);

   return {
     get(key) {
        return JSON.parse(sessionStorage.getItem(name + key));
     }, 
     set(key, value) {
        if(key >= length) this.setLength(key + 1);
        sessionStorage.setItem(name + key, JSON.stringify(value));
     },
     setLength(l) {
        length = l;
        sessionStorage.setItem(name, length);
     },
     push(value) {
        this.set(length, value);
     }
   };
 }

可用作:

 const letters = sessionArray("letters");
 letters.push({some: "thing"});
 console.log(letters.get(0));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM