如何避免localStorage存储的值被修改
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何避免localStorage存储的值被修改相关的知识,希望对你有一定的参考价值。
参考技术A html5 localstorage路径是固定的不可以修改,只能读取数据的。localStorage作为HTML5本地存储web storage特性的API之一,主要作用是将数据保存在客户端中,而客户端一般是指上网用户的计算机。在移动设备上,由于大部分浏览器都支持web storage特性,因此在android和ios等智能手机上的web浏览器都能正常使用该特性。 localStorage保存的数据,一般情况下是永久保存的,也就是说只要采用localstorage保存信息,数据便一直存储在用户的客户端中。即使用户关闭当前web浏览器后重新启动,数据让然存在。知道用户或程序明确制定删除,数据的生命周期才会结束。在安全性方面,localstorage是域内安全的,即localstorage是基于域的。任何在该域内的所有页面,都可以访问localstorage数据。但让然存在一个问题,就是各个浏览器厂商的浏览器之间的数据是各自独立的。也就是说,如果在firefox中使用localstorage存储一组数据,在chrome浏览器下是无法读取的。同样,由于localstorage数据是保存在用户的设备中的,因此同一个应用程序在不同设备上保存的数据是不同的。
如何更改 localStorage 项目中的单个值?
【中文标题】如何更改 localStorage 项目中的单个值?【英文标题】:How do I change a single value inside a localStorage item? 【发布时间】:2011-11-08 01:34:11 【问题描述】:我正在尝试更改本地存储中的值。此项目是复选框的状态。我希望,每次选中一个复选框以将该复选框的值设置为 true 或 false。我尝试了很多方法,直到我意识到不使用 JSON 就无法更改值。
添加我使用的值:
localStorage.setItem("status-" + i, $status.is(":checked"));
并删除我使用:
var parentId = $this.parent().attr('id');
localStorage.removeItem("'" + parentId + "'");
现在要更改我尝试过的值:
$itemList.delegate("#status-" + i, 'click', function(e)
var $this = $(this);
var parentId = this.parent().attr('id');
if ($this.is(":checked"))
localStorage.setItem("'" + parentId + "'".val("fdgsdagf"));
// Note that alert here works.
);
这是我的本地存储的样子: 我希望有人能帮助我。这几天我一直在努力...
非常感谢
【问题讨论】:
【参考方案1】:setItem
有两个参数:
localStorage.setItem('status-1', "'" + parentId + "'".val("fdgsdagf"));
或更可能适合您的情况:
localStorage.setItem(parentId, "fdgsdagf");
最佳实践:
localStorage.setItem('key', JSON.stringify(value));
JSON.parse(localStorage.getItem('key'));
这是一个例子:http://jsfiddle.net/F8sF2/
编辑:从你的小提琴,你需要改变:
var parentId = this.parent().attr('id');
到
var parentId = $this.attr('id');
更新http://jsfiddle.net/CC5Vw/1/
【讨论】:
不幸的是,两者都不起作用。我也对它们进行了调整,以防任何类似的工作,但又没有任何工作。 ***.com/questions/7207337/… 在这篇文章中,有人说没有 JSON 就无法更改项目的值。但他这样做的方式有点令人困惑。谢谢 我想你会想要$this.attr('id')
,而不是父母
但它不会改变状态的值。检查:fiddle.jshell.net/CC5Vw/1/show with firebug。
这并不能真正回答 OP 提出的问题。【参考方案2】:
试试这个
localStorage.setItem(parentId, "fdgsdagf");
localStorage
只不过是 JavaScript 对象,您可以将它们视为关联数组。所以你可以像这样使用它们。
设定值
localStorage[parentId] = "fdgsdagf";
获取价值
var status = localStorage[parentId];
【讨论】:
我想我需要使用'i',因为我有“var i = Number(localStorage.getItem('todo-counter')) + 1”,这样每次复选框都会增加价值。谢谢以上是关于如何避免localStorage存储的值被修改的主要内容,如果未能解决你的问题,请参考以下文章
localstorage - HTML 5 Web 存储总结---凡尘