我正在使用 simplecartjs 为在线商店提供支持。它将数据存储在本地存储中,如下所示:
{"SCI-1":{"quantity":1,"id":"SCI-1","price":20,"name":"Mattamusta -teippi","size":"Tyhjä"},"SCI-3":{"quantity":1,"id":"SCI-3","price":19,"name":"Mohawk .vaimennusmatto 48 x 39cm"},"SCI-5":{"quantity":2,"id":"SCI-5","price":8,"name":"Car Speaker -hajuste","color":"Green Tea"},"SCI-7":{"quantity":1,"id":"SCI-7","price":50,"name":"Asennuspaketti"},"SCI-9":{"quantity":1,"id":"SCI-9","price":30,"name":"Quartz-kalvot","color":"Yellow","size":"50cm x 30cm"},"SCI-11":{"quantity":1,"id":"SCI-11","price":30,"name":"Quartz-kalvot","color":"True Blue","size":"50cm x 30cm"}}
我想在它关闭之前添加这一行。
"SCI-12":{"quantity":1,"id":"SCI-12","price":5,"name":"Toimituskulut"}
但是,产品的数量将取决于用户,因此 SCI-12 必须随着项目数量的增长而增长。
EDIT 实际上,它不一定要使用SCI-1,它可以是任何东西,只要它在项目之后。
编辑2 这就是我正在尝试的......但没有运气。
$("#matkahuolto").click(function(){
var value_object = '"Toimituskulut":{"quantity":1,"id":"Toimituskulut","price":5,"name":"Toimituskulut"}';
var json_object = JSON.parse(localStorage.your_json); // convert string to object
json_object["simpleCart_items"] = value_object; // add value
localStorage.your_json = JSON.stringify(json_object); // store it again.
});
$("#posti").click(function(){
var json_object = JSON.parse(localStorage.your_json); // convert string to object
json_object["simpleCart_items"] = value_object; // add value
localStorage.your_json = JSON.stringify(json_object); // store it again.
});
EDIT3 本地存储的截图。
最佳答案
您需要了解的第一件事是项目如何存储在localStorage 中。 ,它基本上就像一个 HashMap /字典,因为项目存储在键值对中。
例如要存储一个 string localStorage 你会做类似的事情
localStorage["myKey"] = "some value";
要检索您只需反转的值
var myValue = localStorage["myKey"];
接下来要意识到的是,您实际上只能在本地存储中存储字符串,因此如果您想要存储一个对象,您需要先将其转换为字符串表示形式。这通常通过将对象转换为 JSON 来完成。这是一种紧凑的表示法,用于将对象表示为字符串。要将对象转换为 JSON,您只需使用 JSON.stringify 方法,并使用 JSON.parse 方法解析项目
例如将一个对象转换为JSON
var someObject = {id: 1, name: 'Test'};
var jsonSomeObject = JSON.stringify(someObject);
// jsonSomeObject looks like "{"id":1,"name":"test"}"
并从 JSON 中读取一个对象
someObject = JSON.parse(jsonSomeObject);
所以现在在你的情况下,假设你的对象包含适当的数据,你需要做的就是stringify你的对象并使用一些键将它添加到localStorage,
var jsonData = JSON.stringify({"SCI-12":{"quantity":1,"id":"SCI-12","price":5,"name":"Toimituskulut"}});
localStorage["aKey"] = jsonData;
以及当您想稍后访问此数据时(大概是在返回页面之后)
var mySCI = JSON.parse(localStorage["aKey"])
例如,如果您尝试更新 localStorage 中的特定条目,那么您只需读入然后覆盖它
var mySCI = JSON.parse(localStorage["aKey"]);
mySCI.SCI-12.quantity = 2;
localStorage["aKey"] = JSON.stringify(mySCI);
请记住,虽然大多数浏览器内置了对 JSON 的支持,但有些旧浏览器不支持,如果这是一个问题,您可以包括 Douglass Crockfords JSON-js提供支持的脚本。
编辑:
根据您刚刚发布的屏幕截图,您可以看到在 localStorage 中存储值的键实际上是 simpleCart_items(而不是您的代码中使用的 your_json),并且存储的对象具有存储在 key “SCI-1”下的对象(可能还有其他存储在“SCI's”下的对象)。因此您需要做的是类似于以下内容
$("#matkahuolto").click(function(){
var value_object = {quantity: 1, id: 1, name: "someName"} ;
var jsonObject = JSON.parse(localStorage["simpleCart_items"]);
json_object["SCI_1"] = value_object; // add value
localStorage["simpleCart_items"] = JSON.stringify(json_object); // store it again.
});
$("#posti").click(function(){
// convert string to object
var json_object = JSON.parse(localStorage["simpleCart_items"]);
json_object["SCI-1"] = value_object; // add value
localStorage["simpleCart_items"] = JSON.stringify(json_object); // store it again.
});
关于javascript - 修改本地存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12412217/
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
我正在编写一个简单的静态Rack应用程序。查看下面的config.ru代码:useRack::Static,:urls=>["/elements","/img","/pages","/users","/css","/js"],:root=>"archive"map'/'dorunProc.new{|env|[200,{'Content-Type'=>'text/html','Cache-Control'=>'public,max-age=6400'},File.open('archive/splash.html',File::RDONLY)]}endmap'/pages/search.
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我去了这个website查看Rails5.0.0和Rails5.1.1之间的区别为什么5.1.1不再包含:config/initializers/session_store.rb?谢谢 最佳答案 这是删除它的提交:Setupdefaultsessionstoreinternally,nolongerthroughanapplicationinitializer总而言之,新应用没有该初始化器,session存储默认设置为cookie存储。即与在该初始值设定项的生成版本中指定的值相同。 关于
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的
我的Rails站点使用了一个确实不是很好的gem。每次我需要做一些新的事情时,我最终不得不花费与向实际Rails项目添加代码一样多的时间来为gem添加功能。但我不介意,我将我的Gemfile设置为指向我的gem的GitHub分支(我尝试提交PR,但维护者似乎已经下台)。问题是我真的没有找到一种合理的方法来测试我添加到gem的新东西。在railsc中测试它会特别好,但我能想到的唯一方法是a)更改~/.rvm/gems/.../foo。rb,这看起来不对或者b)升级版本,推送到Github,然后运行bundleup,这除了耗时之外显然是一场灾难,因为我不确定我所做的promise是否正
我正在关注Hartl的railstutorial.org并已到达11.4.4:Imageuploadinproduction.我做了什么:注册亚马逊网络服务在AmazonIdentityandAccessManagement中,我创建了一个用户。用户创建成功。在AmazonS3中,我创建了一个新存储桶。设置新存储桶的权限:权限:本教程指示“授予上一步创建的用户读写权限”。但是,在存储桶的“权限”下,未提及新用户名。我只能在每个人、经过身份验证的用户、日志传送、我和亚马逊似乎根据我的名字+数字创建的用户名之间进行选择。我已经通过选择经过身份验证的用户并选中了上传/删除和查看权限的框(而不
我正在使用mechanize登录网站,然后检索页面。我遇到了一些问题,我怀疑这是由于cookie中的某些值造成的。当Mechanize登录网站时,我假设它存储了cookie。如何通过Mechanize打印出存储在cookie中的所有数据? 最佳答案 代理有一个cookie方法。agent=Mechanize.newpage=agent.get("http://www.google.com/")agent.cookiesagent.cookies.to_scookie返回一个Mechanize::Cookiesobject