Javascript 如何获取localstorage的值,而不将其设置为变量

Javascript 如何获取localstorage的值,而不将其设置为变量,javascript,jquery,html,Javascript,Jquery,Html,我知道这可能非常令人困惑,但我想要的是获取localstorage的值,而不是将其设置为: var cookies = localStorage.totalCookies 我希望它是这样的: var cookies = value of localstorage.totalCookies var cookies = +localStorage.totalCookies || 0; 我希望这样,var cookie不等于localstorage,因为我希望对var cookie进行一次更改,

我知道这可能非常令人困惑,但我想要的是获取localstorage的值,而不是将其设置为:

var cookies = localStorage.totalCookies
我希望它是这样的:

var cookies = value of localstorage.totalCookies
var cookies = +localStorage.totalCookies || 0;

我希望这样,var cookie不等于localstorage,因为我希望对var cookie进行一次更改,而不是不断更新localstorage。

这是因为当您将变量声明为对象时,您创建的是对该对象的引用,而不是它的副本。您可以使用
localStorage
getset方法,正如War10ck在上面的评论中提到的:

获取:
localStorage.getItem('totalCookies')
Set:
localStorage.setItem('totalCookies','some value')
删除:
localStorage.removietem('totalCookies')

但一般来说,您需要找到克隆对象的方法,以防止随后对原始对象进行篡改。这里有一个快速的方法:

var cloneOfA = JSON.parse(JSON.stringify(a));
您可以在此处看到关于此的更大讨论:
之所以会发生这种情况,是因为当您将变量声明为对象时,您正在创建对该对象的引用,而不是它的副本。您可以使用
localStorage
getset方法,正如War10ck在上面的评论中提到的:

获取:
localStorage.getItem('totalCookies')
Set:
localStorage.setItem('totalCookies','some value')
删除:
localStorage.removietem('totalCookies')

但一般来说,您需要找到克隆对象的方法,以防止随后对原始对象进行篡改。这里有一个快速的方法:

var cloneOfA = JSON.parse(JSON.stringify(a));
您可以在此处看到关于此的更大讨论:
存储在
localStorage
中的数据类型始终为
string
,即使您向其写入了数值

要恢复数值,只需强制将其恢复为数字,例如使用酉
+
。您还应该为
localStorage
中不存在条目时提供默认值。如果默认值为0,则可以这样编写:

var cookies = value of localstorage.totalCookies
var cookies = +localStorage.totalCookies || 0;
或者,如果要测试该条目是否存在,并对其是否为数字进行另一项测试:

if (localStorage.totalCookies === undefined) {
    console.log('The totalCookies entry was not found');
    // etc..
} else {
    var cookies = +localStorage.totalCookies;
    if (isNaN(cookies)) {
        console.log('The totalCookies entry is not numerical');
        // etc...
    } 
}

存储在
localStorage
中的数据类型始终为
string
,即使您向其写入了数值

要恢复数值,只需强制将其恢复为数字,例如使用酉
+
。您还应该为
localStorage
中不存在条目时提供默认值。如果默认值为0,则可以这样编写:

var cookies = value of localstorage.totalCookies
var cookies = +localStorage.totalCookies || 0;
或者,如果要测试该条目是否存在,并对其是否为数字进行另一项测试:

if (localStorage.totalCookies === undefined) {
    console.log('The totalCookies entry was not found');
    // etc..
} else {
    var cookies = +localStorage.totalCookies;
    if (isNaN(cookies)) {
        console.log('The totalCookies entry is not numerical');
        // etc...
    } 
}

您在
localStorage.totalCookies
中保存了什么?只是好奇,但除非我们讨论的是实际的cookies,最好是巧克力片,否则您为什么要在
localStorage
中存储或读取cookie数据,而不是使用cookies?这似乎是现成的,这是我所期望的,因为您得到的是字符串值,而不是对象引用。看见你能举一个这样的例子吗?这是理解你的问题的关键信息。也许你可以编辑你的问题,并添加它?你在
localStorage.totalCookies
中保存了什么?只是好奇,但除非我们谈论的是实际的cookies,最好是巧克力片,为什么你要在
localStorage
中存储或读取cookie数据而不是使用cookies?这似乎是开箱即用的,这是我所期望的,因为您得到的是字符串值,而不是对象引用。看见你能举一个这样的例子吗?这是理解你的问题的关键信息。也许您可以编辑您的问题,并添加它?发生的是一个计时器事件,它将Autoclick的值添加到totalCookies。但当我每秒使用:getItem或setItem时,它会像这样添加autoclick的值:var autoclick=0;Cookies总数:120,下一秒:Cookies总数:1200,下一秒Cookies总数:12000。为什么会这样呢?看起来您可能是在向字符串中添加字符串,而不是向整数中添加整数。您需要使用
parseInt()
确保javascript知道如何将其视为整数。尝试:
var totalCookies=0
totalCookies=totalCookies+parseInt(newCookie)
或查看上面trincot的智能答案!发生的是一个计时器事件,它将Autoclick的值添加到totalCookies。但当我每秒使用:getItem或setItem时,它会像这样添加autoclick的值:var autoclick=0;Cookies总数:120,下一秒:Cookies总数:1200,下一秒Cookies总数:12000。为什么会这样呢?看起来您可能是在向字符串中添加字符串,而不是向整数中添加整数。您需要使用
parseInt()
确保javascript知道如何将其视为整数。尝试:
var totalCookies=0
totalCookies=totalCookies+parseInt(newCookie)
或查看上面trincot的智能答案!非常感谢你,我不知道,这解决了我所有的问题!非常感谢你,我不知道,这解决了我所有的问题!