根据我的要求,我按照以下方式构建了一个Javascript字符串:
var empDetails= "ID=" + id + ";" + "Name=XYZ" + ";" + "Address=ABC";
// id is autoincremented like 1,2,3 and so on.
if (sessionStorage.getItem('empDet') === null) {
sessionStorage.setItem('empDet', empDetails);
} else {
var empDets= sessionStorage.getItem('empDet');
var pResult = empDets;
if (pResult.length > 0) {
var ptotalEmp= empDets.toString().concat(';' + empDetails.toString());
sessionStorage.setItem('empDet', ptotalEmp);
}
}
现在,我需要提供一些选项来编辑以下详细信息,如果用户选择了一些ID,如果他更改了与Name and Address
相关的一些内容,我需要更新并存储。有人能帮我吗?
答案 0 :(得分:3)
你可以存储一个我认为比处理字符串更好的对象。如果你有一个像这样的对象:
var user = { id: 1, name: "ABC", address: "DEF" };
您可以使用JSON.stringify
stringify 来存储在本地存储上。然后使用 JSON.parse :
sessionStorage.setItem('user', JSON.stringify(user));
var u = JSON.parse(sessionStorage.getItem('user'));
现在将它用作对象:
u.name = "Foo";
u.address = "Bar";
在Fiddle上查看。
顺便说一下,你可以轻松地使用一个功能。
答案 1 :(得分:2)
这个更好的方法是你可以在你使用现有的empDetails连接新的empDetails的地方使用其他一些角色。
EG。您可以在下面的代码中将其更改为var ptotalEmp= empDets.toString().concat('|' + empDetails.toString());
..
if (sessionStorage.getItem('empDet') === null) {
sessionStorage.setItem('empDet', empDetails);
}
else {
var empDets= sessionStorage.getItem('empDet');
var pResult = empDets;
if (pResult.length > 0) {
var ptotalEmp= empDets.toString().concat('|' + empDetails.toString());
sessionStorage.setItem('empDet', ptotalEmp);
}
}
现在您可以使用'|'
符号吐出每个emp详细信息,然后获取详细信息,更新并存储。
答案 2 :(得分:0)
怎么样:
var empDetails= "ID=" + id + ";" + "Name=XYZ" + ";" + "Address=ABC";
function updateDetails(str,name,addr) {
var reg = /ID=(\d+);Name=(.*?);Address=(.*?)$/;
var fin = reg.exec(d);
return "ID="+fin[1]+";"+"Name="+(name?name:fin[2])+";"+"Address="+(addr?addr:fin[3])+";";
}
updateDetails(empDetails,"replacement");
答案 3 :(得分:0)
好的,完成了!我创建了3个函数来设置,获取和清除特定的sessionstorage项。
以下是代码:
function setValue(){
var id = document.getElementById("id"),
name = document.getElementById("name"),
address = document.getElementById("address"),
item = "ID=" + id.value + ";NAME=" + name.value + ";ADDRESS=" + address.value;
if(sessionStorage.getItem('empDet')){
var existing = getValue().split("||"),
repaced = false;
for(var i = 0; i<existing.length; i++){
if(existing[i].split(";")[0].split("=")[1] == id.value){
existing[i] = item;
repaced = true;
}
}
item = repaced ? existing : existing + "||" + item;
}
sessionStorage.setItem('empDet', item);
id.value = name.value = address.value = "";
}
function getValue(cry){
var existing = sessionStorage.getItem('empDet');
if(cry){
alert(existing);
}
return existing;
}
function clearValue(){
sessionStorage.removeItem('empDet');
}
工作演示:http://jsfiddle.net/ashishanexpert/hu2V3/1/
您可以根据自己的需要进行自定义。
===================编辑=================== < / p>
在评论中有一个建议,即使用JSON对象比使用String更好,这非常有用。所以,稍微更新了代码,现在它是基于JSON的。
function setValue(){
var id = document.getElementById("id"),
name = document.getElementById("name"),
address = document.getElementById("address"),
item = {
ID : id.value,
NAME : name.value,
ADDRESS : address.value
},
allTogether = [],
repaced = false;
if(sessionStorage.getItem('empDet')){
allTogether = JSON.parse(getValue());
for(var i = 0; i < allTogether.length; i++){
if(allTogether[i].ID == id.value){
allTogether[i] = item;
repaced = true;
}
}
}
if(!repaced){
allTogether.push(item);
}
sessionStorage.setItem('empDet', JSON.stringify(allTogether));
id.value = name.value = address.value = "";
}