Javascript 如果分配对象而不是键,如何删除本地存储?
我有一段代码为localStorage分配对象。如何在选项卡/窗口关闭后删除它Javascript 如果分配对象而不是键,如何删除本地存储?,javascript,html,Javascript,Html,我有一段代码为localStorage分配对象。如何在选项卡/窗口关闭后删除它 localSotrage['data']=JSON.stringify({folder1:{logedIn:1},folder2:{logedIn:0},folder3:{logedIn:1}) 我试着用 删除window.localStorage['data']和 window.localStorage.removietem(数据)和 localStorage.removietem(数据) 但不起作用。当我关闭浏览
localSotrage['data']=JSON.stringify({folder1:{logedIn:1},folder2:{logedIn:0},folder3:{logedIn:1})代码>
我试着用
删除window.localStorage['data']
和
window.localStorage.removietem(数据)
和
localStorage.removietem(数据)
但不起作用。当我关闭浏览器并再次访问它时,它将引导我直接进入登录页。关于如何做有什么帮助吗?事先非常感谢只需将值设置为null
或undefined
:
localSotrage['data'] = null;
您还可以使用:
delete localStorage.data //or
localStorage.removeItem("data")
处理本地存储的正确方法是使用,其中包括setItem
、getItem
和removietem
方法-这样做而不是直接访问属性。使用API可以跨浏览器(在支持浏览器的地方)和本地存储系统可靠地工作
(下面显示了API的工作原理;如果有错误,请注意它的确切含义。)
使用上述API的另一个原因是localStorage.setItem(“getItem”,“foo”)
不会中断localStorage.getItem
的下一次使用,因为存储键/值对和存储对象属性保持明显的区别
在Chrome(或者其他地方)中,从普通JavaScript对象中删除属性的操作符“起作用”。出于各种原因,我不推荐或使用这种速记
W3CAPI根本没有讨论/定义它
它混淆了JS属性和底层模型;考虑<代码> LoalStury[GigTime] < /C>和变体,如上面讨论的
它不能也不会在垫片上工作
例如,在任何情况下:
localStorage["data"] = "hi!"
localStorage.getItem("data") // -> "hi!"
localStorage["data"] // -> "hi!"
localStorage.hasOwnProperty["data"] // -> true (exposed property in Chrome)
delete localStorage["data"]
localStorage.getItem("data") // -> null
localStorage["data"] // -> undefined
localStorage.hasOwnProperty["data"] // -> false (property is gone)
请参见如果要删除保存在localStorage中的特定项目,请执行以下操作:
localStorage.setItem("key", "value"); // Set a value with a "key"
localStorage.getItem("key"); // Get the value associated with "key"
localStorage.removeItem("key"); // Remove value associated with "key"
您还可以清除所有本地存储。这是通过以下方式完成的:
localStorage.clear();
然后,您将清除LocalStorRange中的所有数据
您可以使用sessionStorage执行同样的操作。使用相同的方法。如果您想要这种行为,我认为您应该使用会话存储,但在这种特殊情况下,我将使用:
window.onbeforeunload=函数(){
删除本地存储['data'];
};代码>
要删除该值及其键,将其设置为null将保留该键
顺便说一下,您在代码中拼错了localStorage,只是让您知道=)localStore.removietem(“数据”)
您只能替换本地存储中的内容;不删除it@aliasm2k:当然可以删除它。您尝试的解决方案会起作用,尽管@tymeJV指出,您在使用.removietem()
时忘记了数据
周围的引号。如果您有问题,问题中没有说明。而且“…如果您分配的是对象而不是键”没有真正意义。这里有一个问题是,如果您分配了localStorage[“clear”]
,那么在调用localStorage.clear()之前只需调用localStorage.removietem(“clear”)
感谢各位的回答。amitab所以如果我有localSotrage['data']
,那么我需要localStorage.removwItem(“数据”)
然后localStorage.clear()
?我试试看,让你知道。非常感谢你给我解释。我尝试给它一个对象,因为我想让它检查用户是否已登录,如果未登录,则重定向到loign页面。我会试试你的答案,让你知道发生了什么。谢谢,如果我想检查这个密钥是否是从登录页面设置的呢。我在登录时有这个localStorage['data1b']=JSON.stringify({logedIn:0})
,这个localStorage['data']=JSON.stringify({folder1:{logedIn:1},folder2:{logedIn:0},folder3:{logedIn:1})代码>在索引上。我怎么用你的答案做出这样的事情?谢谢你的回答。我没有使用会话存储,因为我不想使IOS浏览器复杂化。我会试试你的答案,然后告诉你。非常感谢你注意到这一点。真糟糕,我没注意到。再次感谢您的欢迎,祝您项目顺利,其他用户也给出了很好的提示,特别是用户2864740=)谢谢。我尝试使用window.onbeforeunload=function(){delete localStorage['data'];}代码>发生的情况是,当您访问文件夹时,您将看到登录页,然后当您刷新时,这是它将您重定向到登录页的唯一时间。你能帮我找出我做错了什么吗?感谢如果我不确定是否理解,您试图实现的行为是什么?我给您的代码仅在您关闭选项卡/窗口或刷新,甚至转到其他网站后,才会从localStorage中删除该值,在这些情况下,您将删除该值。如果它没有这样做,您可能会在某个时候再次设置该值,让我知道您想要实现的目标是什么,如果它与原始问题太不一致,我想您应该打开另一个问题,并将其中一个答案标记为正确答案。嗨,谢谢您的帮助。我两个都试过了。但是,当你访问文件夹时,你会看到登录页,当你刷新时,这是唯一一次它会将你重定向到登录页。你能帮我找出为什么会这样吗?谢谢,如果投票人能发表评论并让我知道答案有什么问题,我将不胜感激!
localStorage.clear();