HTML5本地存储添加双引号

14

我目前正在将字段的值分配给一个变量:

userName = document.getElementById('userName').value;

然后将该变量分配给localstorage:

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

在这里检索该物品:

var retrievedUserName = localStorage.getItem('userName');
尝试将项目内容输出到HTML div中:
document.getElementById("response-heading-name2").innerHTML = retrievedUserName;

...但是当我检查HTML时,它输出带有双引号的字符串:"My name"

有人知道为什么会发生这种情况,以及如何防止双引号出现吗?

2个回答

29

这与本地存储无关。

当你使用JSON.stringify将数据结构转换为JSON时,引号会被添加。

在从本地存储中检索数据后,您应该使用JSON.parse将JSON转换回JavaScript数据结构。


使用JSON的重点是确保存储的是字符串,因为本地存储只能存储字符串。

由于您获取的是输入值,所以知道它将是一个字符串。因此,您可以完全不使用JSON,而不需要首先将其JSON.stringify


没错,我在读第一段的时候也意识到了。不错。 - Amir Savand

3

localStorage始终将字符串数据用双引号存储,当您检索相同数据时,会带有双引号。因此只需使用JSON.parse进行修复。

var retrievedUserName = JSON.parse(localStorage.getItem('userName'));

字符串化走错了方向。你需要使用解析(parse)。(就像我在五年前的回答中所说的那样)。 - Quentin
1
“localStorage总是使用双引号存储字符串数据” — 不是这样的。它将存储您放入其中的字符串。如果字符串包含双引号,则localStorage中的数据将包含双引号。如果没有,它就不会。 - Quentin
如果字符串包含双引号,则localStorage中的数据将包含双引号。如果没有双引号,则不会有双引号 -- 不,我将值作为参数传递,它存储了双引号。 - Muthamizhchelvan. V

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接