简体   繁体   English

在本地存储中设置对象的值

[英]Set object's values in local storage

I would like to store User Data as a single object in Local Storage. 我想将用户数据作为单个对象存储在本地存储中。

Here is the code and below it the problem description: 这是代码,下面是问题描述:

const firstName = document.getElementById('firstname');
const lastName = document.getElementById('lastname');
const address = document.getElementById('address');
const city = document.getElementById('city');
const postCode = document.getElementById('postcode');
const email = document.getElementById('email');
const checkBox = document.getElementById('check-remember');
const message = document.getElementById('message');

// define userData object 

let userData = {
    firstName: '',
    lastName: '',
    address: '',
    city: '',
    postCode: '',
    email: '',
    checkBox: '',
    message: ''
};

// set this object as string in the LS 

localStorage.setItem('userData', JSON.stringify(userData));

// parse it to native JS data and store it in new var

let userDataNative = JSON.parse(localStorage.getItem('userData'));

// add event listeners to form's input fields: 

firstName.addEventListener('keyup', setFirstName);
lastName.addEventListener('keyup', setLastName);
address.addEventListener('keyup', setAddress);
city.addEventListener('keyup', setCity);
postCode.addEventListener('keyup', setPostCode);
email.addEventListener('keyup', setEmail);
message.addEventListener('keyup', setUserMessage);

// set actual input values as userData object's value for each key

function setFirstName(event) {
    userData.firstName = event.target.value;
}
function setLastName(event) {
    userData.lastName = event.target.value;
}
function setAddress(event) {
    userData.address = event.target.value;
}
function setCity(event){
    userData.city = event.target.value;
}
function setPostCode(event){
    userData.postCode = event.target.value;    
}
function setEmail(event){
    userData.email = event.target.value;
}
function setUserMessage(event){
    userData.message = event.target.value;
}

The Problem: the userData object in Local Storage is not updated. 问题:本地存储中的userData对象未更新。 When I enter some text in the input fields on the page and then log userData I do get an object with the right keys and the actual values in the console - BUT the userData object in Local Storage stays empty. 当我在页面上的输入字段中输入一些文本,然后登录userData时,确实在控制台中获得了带有右键和实际值的对象-但是Local Storage中的userData对象保持为空。

Can you help? 你能帮我吗? What am I missing here? 我在这里想念什么?

Many thanks, all help much appreciated. 非常感谢,所有帮助深表感谢。

It appears you're assuming userData is a reference to localStorage , but it is not. 看来您假设userData是对localStorage的引用,但事实并非如此。 Since localStorage is a string and you have to parse it to a javascript object, there is no such relationship. 由于localStorage是字符串,因此您必须将其解析为javascript对象,因此没有这种关系。 This means that, to re-save the information to localStorage , you need to execute the following code again. 这意味着,要将信息重新保存到localStorage ,您需要再次执行以下代码。

localStorage.setItem('userData', JSON.stringify(userData));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM