localStorage setItem代替更新

问题描述 投票:2回答:2

我试图使用setItem将数据保存在localStorage中,但是当我刷新镶边选项卡并将数据添加到我的数组时,localStorage中的数据会删除旧数据并设置一个新数据,而不是更新该旧数据。这是我的代码:


let capacity = 200;
let reservedRooms = 0;
let users = [];

let rsBox = document.getElementById('reservebox');

class Reserver {
    constructor(name , lastName , nCode , rooms){
        this.name = name ;
        this.lastName = lastName ;
        this.nCode = nCode ;
        this.rooms = rooms ;
    }

    saveUser(){
        if(this.rooms > capacity){
            console.log('more than capacity');
        }else{
            users.push({
                name : this.name ,
                lastName : this.lastName ,
                id : this.nCode ,
                rooms : this.rooms
            });
            capacity -= this.rooms ;
            reservedRooms += this.rooms ;
        }
    }

    saveData(){
        localStorage.setItem('list',JSON.stringify(users));
    }



}


rsBox.addEventListener('submit',function(e){

    let rsName = document.getElementById('name').value;
    let rsLastName = document.getElementById('lastname').value;
    let rsNationalCode = Number(document.getElementById('nationalcode').value);
    let rooms = Number(document.getElementById('rooms').value);

    //Save the user data
    let sign = new Reserver(rsName , rsLastName , rsNationalCode , rooms);
    sign.saveUser();
    sign.saveData();





    e.preventDefault();
});
javascript json local-storage
2个回答
3
投票

每次重新加载页面时,您要推送一个空的用户数组,要解决此问题,需要从存储的项目中填充用户数组。


0
投票

另一种选择是更改saveData方法,以便在加载应用程序时不必加载localStorage

© www.soinside.com 2019 - 2024. All rights reserved.