sessionStorage

时间:2018-05-19 16:34:32

标签: javascript key sessionstorage

所以我这里有这个代码

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

但是我知道这是错的,因为密钥不会增加,它会覆盖这个东西,如果我去另一个页面然后回来,因为我的所有页面都使用了这个脚本,怎么做我解决了这个问题?

1 个答案:

答案 0 :(得分:0)

只需将数组存储在一个存储属性中:

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));