下面是一些覆盖字符串中的属性的代码,但是这个函数中缺少的是一个条件来测试该属性是否存在,如果它不存在则创建它然后返回整个字符串,否则覆盖该属性并返回然后它目前所做的整个字符串。我已经尝试过了,但我没有得到想要的结果。有人可以看看并尝试使用下面的示例函数动态创建一个新属性。
var cookieValue =
'id=1&state=normal&theme=purple:
id=2&state=maximized&theme=pink:
id=3&state=maximized&theme=black';
function setProperties(cookie, id , name, value, create) {
var sections = $.map(cookie.split(":"), function (section) {
var pairs;
if (section.indexOf("id=" + id) === 0) {
// if condition here - create a new property
// else run code below
pairs = $.map(section.split("&"), function (pair) {
if (pair.indexOf(name + "=") === 0) {
return name + "=" + value;
}else {
return pair;
}
});
return pairs.join("&");
} else {
return section;
}
});
return sections.join(":");
}
alert(setProperties(cookieValue, '2', 'theme', 'green', true));
alert(setProperties(cookieValue, '2', 'color', 'orange', true)); // new property