Omidgh:
私はローカルストレージに私のデータを保存しようとしましたsetItem
が、私はクローム]タブを更新し、私の配列にデータを追加するとき、の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();
});
フレーザー:
あなたは、あなたがストレージを持っている項目の中から、ユーザーの配列を移入する必要があり、これを解決するために、空のユーザーアレーあなたはページをリロードするたびに、推進しています。
たとえば、
let users = [];
以下のようなものである必要があります
let users = JSON.parse(localStorage.getItem('list')) || [];
重要な点は、あなたの既存のユーザーは、あなたが、あなたは、基本的にユーザーアレイ新鮮たびにページが読み込まを作成しているしていない、あなたはそれにデータを置く場合、それらに追加できるようにロードする必要があるということで。
それは、それがない場合は、それを作成する場合は、それがロード、配列が初期化されているかどうかを確認することを「loaddataの」機能のようなものを作成することもできます。キーが存在などがない場合は、あなたが任意のキーにアクセスし、デフォルト値を提供するためにそれを使用することができ、この一般的なので、を行うことができます
function loadData(key, def) {
var data = localStorage.getItem(key);
return null == data ? def : JSON.parse(data)
}
それから
// load "list" - set to an empty array if the key isn't present
let users = loadData('list', []);